Java中是否有一个实用方法(也许是
stream()
)来生成顺序元素列表,例如按常量值(秒,分钟,小时)增加的时间?
bySeconds(Start_time="10:00:00" interval=2, count=100)=>{"10:00:00", "10:00:02", "10:00:04", "10:00:06", "10:00:08", ......}
byMinutes(Start_time="10:00:00", interval=5, count=100)=>{"10:05:00", "10:10:00", "10:15:00", "10:20:00", "10:25:00", ......}
byHours(Start_time="10:00:00", interval=1, count=100)=>{"10:00:00", "11:00:00", "12:00:00", "13:00:00", "14:00:00", ......}
是的
Stream.iterate
就是为此目的而设计的。例如:
Stream.iterate(LocalTime.of(10, 5), Duration.ofMinutes(5)::addTo)
将生成从 10:05 开始并增加 5 分钟的无限时间流。如果您想要一个特定的终点,可以使用
Stream.limit
来获取某个数字,或者向 Stream.iterate
添加谓词或使用 Stream.takeWhile
在某个点结束。要转换为列表,请使用 Stream.toList
。
如果您希望将时间转换为特定的字符串格式,请使用
DateTimeFormatter
。例如,转换为您问题示例中的格式:
.map(DateTimeFormatter.ISO_LOCAL_TIME::format)
您可以使用
IntStream
创建 IntStream.range(start, endExclusive)
,然后在流上使用 .map()
或 .mapToObj()
将值映射到其他内容。所有值都是连续的,因此 IntStream.range(0, 10)
将生成包含 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
的流。