[英]Get list of all instants between 2 instants in Scala
我想获得今天和(今天 - 15)天之间所有瞬间的列表。
我知道如果 scala,我可能需要你使用 LazyList,但我不太熟悉语法,因为我是新手。 相当于 java 似乎是
Set <Instant> allPossibleDates =
Stream.iterate(today, date -> date.minus(1, ChronoUnit.DAYS))
.limit(numDates)
.collect(Collectors.toSet());
这在 Scala 中的等价物是什么?
LazyList
companion object 定义了一个iterate
方法,它允许您根据起点和步骤操作定义序列(注意: Iterator
的同伴定义了类似的方法):
def iterate[A](start: => A)(f: (A) => A): LazyList[A]
事实上,它看起来与 Java 版本基本相同,只是start
和f
arguments 出现在单独的参数列表中。 Pepper in Scala 的匿名函数语法糖(使用_
表示 function 参数),你可以这样做
val today = Instant.now() // or whatever
LazyList
.iterate(today) { _.minus(1, ChronoUnit.DAYS) }
.take(15) // equivalent to `limit` in Java
.to(Set) // equivalent to `collect(...)`
另请注意,LazyList 定义了iterate
的重载,它有一个限制,它将取代.take
:
LazyList
.iterate(today, 15) { _.minus(1, ChronoUnit.DAYS) }
.to(Set)
请注意,您可以执行.foreach { instant => /*... */ }
而不是.to(SomeCollectionCompanion)
来迭代内容,而无需为集合分配 memory。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.