Scala List 按日期差异过滤
Scala List filter by date difference
我遇到了一个问题,我真的不知道如何以正确的 Scala 方式解决它。
我有一个包含日期的对象列表。我想做这样的事情:
我想在列表中的 2 个后继者之间使用可接受的时间值(例如 2 小时)进行选择。目的是保持用户趋势与一个点的比较(如果他在这里出现 2 次,或者 1 次或 15 次!)。
我想象的算法:
- 我们保留2点A和B。我们计算2点之间的时间差,然后评估是否可以接受(>2h,可以接受)。
- 如果不可接受,我们拒绝 B,然后新的 B 是下一个列表元素。
- 如果可接受,B 变为 A,新的 B 是下一个列表元素。
怎么做,用一些过滤器或收集?哦,如果算法听起来不适合你,我愿意接受批评!
编辑:我不是要解决方案,而是要查找正确的函数!
假设我有一个整数列表,我想遍历它们,只保留比前一个大 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
}
我遇到了一个问题,我真的不知道如何以正确的 Scala 方式解决它。
我有一个包含日期的对象列表。我想做这样的事情:
我想在列表中的 2 个后继者之间使用可接受的时间值(例如 2 小时)进行选择。目的是保持用户趋势与一个点的比较(如果他在这里出现 2 次,或者 1 次或 15 次!)。
我想象的算法:
- 我们保留2点A和B。我们计算2点之间的时间差,然后评估是否可以接受(>2h,可以接受)。
- 如果不可接受,我们拒绝 B,然后新的 B 是下一个列表元素。
- 如果可接受,B 变为 A,新的 B 是下一个列表元素。
怎么做,用一些过滤器或收集?哦,如果算法听起来不适合你,我愿意接受批评!
编辑:我不是要解决方案,而是要查找正确的函数!
假设我有一个整数列表,我想遍历它们,只保留比前一个大 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
}