计算 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 个,这将失败。