计算 List[List[]] 中连续出现的次数
Count consecutive occurrences in List[List[]]
我有一个列表列表,我需要在其中计算给定元素的连续出现次数。
列表结构如下:
List[List[Attendance]]
Attendance(val scheduleId: Long,
val date: LocalDate,
val teamId: Long,
val memberId: Long,
var attendance: AttendanceType)
我需要检查列表中给定元素的次数 AttendanceType == In
后跟相同的 AttendanceType == In
。
我看到有人使用 containsSlice()
和 Seq(x, y)
来检查这种情况是否发生过一次,但不计算它发生的次数。
是这样的吗?
def countSeqDup(l: List[List[Attendance]], in: AttendanceType): Int =
l.flatten.sliding(2).count{ x => x(0).attendance == in && x(1).attendance == in}
flatten
创建单个值列表,sliding
将它们分组为相邻的对,因此这只是计算匹配对的问题。
请注意,如果元素总数少于 2 个,这将失败。
我有一个列表列表,我需要在其中计算给定元素的连续出现次数。
列表结构如下:
List[List[Attendance]]
Attendance(val scheduleId: Long,
val date: LocalDate,
val teamId: Long,
val memberId: Long,
var attendance: AttendanceType)
我需要检查列表中给定元素的次数 AttendanceType == In
后跟相同的 AttendanceType == In
。
我看到有人使用 containsSlice()
和 Seq(x, y)
来检查这种情况是否发生过一次,但不计算它发生的次数。
是这样的吗?
def countSeqDup(l: List[List[Attendance]], in: AttendanceType): Int =
l.flatten.sliding(2).count{ x => x(0).attendance == in && x(1).attendance == in}
flatten
创建单个值列表,sliding
将它们分组为相邻的对,因此这只是计算匹配对的问题。
请注意,如果元素总数少于 2 个,这将失败。