gpt4 book ai didi

java-8 - 如何过滤作为 Java 8 中 Map 条目值的列表?

转载 作者:行者123 更新时间:2023-12-01 10:19:44 24 4
gpt4 key购买 nike

我有一个 Map<B, List<A>> .我想根据一些依赖于 B 类型映射条目键的谓词过滤掉一些 A。例如,这是我的数据结构:

List<Integer> list1 = Arrays.asList(5,2,3,4);
List<Integer> list2 = Arrays.asList(5,6,7,8);
List<Integer> list3 = Arrays.asList(9,10,11,12,13);
List<Integer> list4 = Arrays.asList(11,23,112);
Map<Long, List<Integer>> map = new HashMap<>();
map.putIfAbsent(2L, list1);
map.putIfAbsent(3L, list2);
map.putIfAbsent(4L, list3);
map.putIfAbsent(5L, list4);

现在我想遍历 map 的 entrySet 并创建一个新 map ,其中包含的元素是该条目的键的倍数。即输出应如下所示:

2L --> List of (2, 4)
3L --> List of (6)
4L --> List of (12)
5L --> empty List

过滤谓词使用映射条目键值来测试列表元素。如何在不修改原始 map 的情况下实现这一目标?

最佳答案

这是解决问题的一种方法,通过流式传输原始映射中的条目,并使用键和过滤列表创建新映射:

Map<Long, List<Integer>> newMap = map.entrySet().stream()
.collect(Collectors.toMap(Map.Entry::getKey, entry -> entry.getValue().stream()
.filter(value -> value % entry.getKey() == 0)
.collect(Collectors.toList())));

关于java-8 - 如何过滤作为 Java 8 中 Map 条目值的列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54359031/

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