scala 生成指定日期范围的list

可以通过scala中的流处理,生成指定范围内的日期list

import java.time.LocalDate
def dateStream(fromDt:LocalDate):Stream[LocalDate]={
    fromDt #::dateStream(fromDt.plusDays(1)) 
}

dateStream(LocalDate.of(2021,5,1))
    .takeWhile(_.isBefore(LocalDate.of(2021,5,16)))
    .toList.map(_.toString)

res0: List[String] = List(2021-05-01, 2021-05-02, 2021-05-03, 2021-05-04, 2021-05-05, 2021-05-06, 2021-05-07, 2021-05-08, 2021-05-09, 2021-05-10, 2021-05-11, 2021-05-12, 2021-05-13, 2021-05-14, 2021-05-15)

Stream(流)是Scala的一个特性,是一个惰性的列表,列表中的元素只有其在被需要的时候才经过计算,流计算能提高程序的性能。Python中的生成器(yield关键词)也是采用的惰性计算。
scala中使用“#::”操作符来构造一个流。

posted @ 2021-07-17 11:22  real-zhouyc  阅读(450)  评论(0编辑  收藏  举报