gpt4 book ai didi

java - 将流元素映射到 LocalDate,而不收集到列表

转载 作者:行者123 更新时间:2023-12-01 19:28:17 25 4
gpt4 key购买 nike

假设我有一个代表每日数据的整数流:

Stream.of(12,19,7,13,42,69);

其中每个数字属于从 2020 年 1 月 22 日开始的一个日期,我想获取一张 map Map<LocalDate,Integer>

所以基本上我需要这样的东西:

22.01.2020  = 12
23.01.2020 = 19
24.01.2020 = 7
25.01.2020 = 13
26.01.2020 = 42
27.01.2020 = 69

如何从给定日期(例如 2020 年 1 月 22 日)开始递增 key (LocalDate)?

Map<LocalDate,Integer> map = Stream.of(12,19,7,13,42,69)
.collect(Collectors.toMap(x -> **LocalDate.of(2020,1,22)**, x -> x));

最佳答案

更清洁的解决方案可能是使用 IntStream如:

LocalDate firstDay = LocalDate.of(2020, Month.JANUARY, 22);
List<Integer> data = List.of(12, 19, 7, 13, 42, 69);
Map<LocalDate, Integer> finalMap = IntStream.range(0, data.size())
.mapToObj(day -> Map.entry(firstDay.plusDays(day), data.get(day)))
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));

或者如果您被 Stream<Integer> 困住了使用 AtomicInteger 作为数据输入限制执行顺序执行也不是一个坏主意:

LocalDate firstDay = LocalDate.of(2020, Month.JANUARY, 22);
AtomicInteger dayCount = new AtomicInteger();
Map<LocalDate, Integer> finalMap = Stream.of(12, 19, 7, 13, 42, 69)
.map(data -> Map.entry(firstDay.plusDays(dayCount.getAndIncrement()), data))
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
System.out.println(finalMap);

关于java - 将流元素映射到 LocalDate,而不收集到列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60724344/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com