Scala列表按日期差异过滤

buz*_*uzz 2 scala list filter collect

我有一个问题,我真的不知道如何以适当的Scala方式做到这一点.

我有一个对象列表,持有一个日期.我想做这样的事情:

名单

我想在列表中的2个后继者之间使用可接受的时间值(例如2小时)进行选择.目的是保持用户趋势与某点的比较(如果他在这里显示2次,或1或15!).

我想象的算法:

  • 让我们保持2点A和B.我们计算2点之间的时差,然后评估它是否可接受(> 2h,可接受).
  • 如果它不可接受,我们拒绝B,然后新的B是下一个列表元素.
  • 如果可以接受,则B变为A,新B是下一个列表元素.

怎么做,有一些过滤器或收集?哦,如果算法听起来不适合你,我会受到批评!

编辑:我不是要求解决方案,而是要查找正确的函数!

mat*_*its 6

假设我有一个整数列表,我想逐步完成它们,只保留比前一个大1的值.我会使用foldLeft来逐步完成它们,建立一个只有可接受项目的列表:

val nums = List(1,2,4,5,7)

nums.foldLeft(List[Int]()){
  case (List(), b) => List(b)
  case (list, b) if b - list.head > 1 =>  list :+ b
  case (list, b) => list
}
Run Code Online (Sandbox Code Playgroud)

  • 很好,清晰的解释.中间情况下的`b :: list` +结果上的`.reverse`会更有效 (3认同)