如何识别每个元素是从List中的下一个元素开始

时间:2017-09-08 07:28:46

标签: scala

我有一个列表,其中包含格式为Local Date Time类型的元素数量,如下所示。

xSQLServerAlwaysOnAvailabilityGroupListener

我想检查List的每个元素是否来自下一个元素。例如,list的第一个值在list之前的第二个值之前。同样明智的我想检查列表中的所有元素。任何人都可以帮助我。

2 个答案:

答案 0 :(得分:5)

这将测试List格式良好的日期字符串是否按时间顺序排列。

import java.time.LocalDateTime

val dates: List[String] = List( "2017-06-25T00:00"
                              , "2017-06-25T00:05:13"
                                // etc.
                              , "2017-06-25T01:01:03"
                              )

dates.iterator
     .map(LocalDateTime.parse)
     .sliding(2)
     .forall(x => x(0) isBefore x(1))  // returns true/false

包含.iterator,以便可以懒惰地解析日期字符串,即如果其中一个第一个日期出现故障,那么列表中的后续日期根本不需要解析

答案 1 :(得分:-1)

这是一种方法,用于检查序列中日期的每个字符串是否早于下一个字符串(假设您有一个名为isBefore的方法来比较其中两个字符串

@tailrec
def isMonotouslyIncreasing(seq: Seq[String]): Boolean = {
  if(seq.size <= 1) true
  else if(isBefore(seq(0), seq(1))) isMonotouslyIncreasing(seq.tail)
  else false
}