如何用Java(如stream())生成固定增量递增的时间序列列表
Java生成固定增量的时间序列
Java 8及以上的标准库可以通过Stream结合java.time API实现按固定增量生成时间序列,不需要额外工具类,以下是对应场景的实现示例:
按秒递增
import java.time.LocalTime; import java.util.List; import java.util.stream.Collectors; import java.util.stream.Stream; public class TimeSequence { public static void main(String[] args) { LocalTime startTime = LocalTime.parse("10:00:00"); int interval = 2; // 秒 int count = 100; List<String> timeSequence = Stream.iterate(startTime, t -> t.plusSeconds(interval)) .limit(count) .map(LocalTime::toString) .collect(Collectors.toList()); // 输出示例:["10:00:00", "10:00:02", ...] System.out.println(timeSequence); } }
按分钟递增
import java.time.LocalTime; import java.util.List; import java.util.stream.Collectors; import java.util.stream.Stream; public class TimeSequence { public static void main(String[] args) { LocalTime startTime = LocalTime.parse("10:00:00"); int interval = 5; // 分钟 int count = 100; List<String> timeSequence = Stream.iterate(startTime, t -> t.plusMinutes(interval)) .limit(count) .map(LocalTime::toString) .collect(Collectors.toList()); // 输出示例:["10:00:00", "10:05:00", ...] System.out.println(timeSequence); } }
按小时递增
import java.time.LocalTime; import java.util.List; import java.util.stream.Collectors; import java.util.stream.Stream; public class TimeSequence { public static void main(String[] args) { LocalTime startTime = LocalTime.parse("10:00:00"); int interval = 1; // 小时 int count = 100; List<String> timeSequence = Stream.iterate(startTime, t -> t.plusHours(interval)) .limit(count) .map(LocalTime::toString) .collect(Collectors.toList()); // 输出示例:["10:00:00", "11:00:00", ...] System.out.println(timeSequence); } }
补充说明
- 如果需要处理包含日期的完整时间(如
LocalDateTime),只需将LocalTime替换为LocalDateTime,调用对应的plusDays()、plusHours()等方法即可。 - Java 9及以上版本可使用
Stream.iterate的重载版本,支持自定义终止条件:Stream.iterate(startTime, t -> true, t -> t.plusSeconds(interval))
内容的提问来源于stack exchange,提问作者mbeider
相关产品推荐
相关产品推荐

