Scala列表按日期差异过滤

时间:2015-09-01 09:42:57

标签: list scala filter collect

我遇到了问题,而且我真的不知道如何以适当的Scala方式做到这一点。

我有一个对象列表,有一个约会。我想做这样的事情:

lists

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

我想象的算法:

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

如何使用一些过滤器或收集?哦,如果算法对你来说听起来不太好,我会受到批评!

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

1 个答案:

答案 0 :(得分: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
}