我想使用 获取多个键的值HashMap,例如:HashMap<Integer, String> map = new HashMap<Integer, String>();map.put(1, "Hello");map.put(2, "World");map.put(3, "New");map.put(4, "Old");现在我想组合1和 的值2并创建一个List<String>输出。我可以通过 2 次获取操作或创建一个接受键列表并返回值列表的函数来完成此操作。但是是否有任何内置的util函数可以完成相同的工作?
3 回答
墨色风雨
TA贡献1853条经验 获得超6个赞
您可以使用Stream
:
List<Integer> keys = List.of(1,2); List<String> values = keys.stream() .map(map::get) .filter(Objects::nonNull) // get rid of null values .collect(Collectors.toList());
这将导致List
:
[Hello, World]
慕标琳琳
TA贡献1830条经验 获得超9个赞
您可以获取Set
包含键的输入来查询和使用流操作Stream#filter
,并Stream#map
过滤和映射结果,最后将值收集到列表中:
HashMap<Integer, String> map = new HashMap<Integer, String>(); map.put(1, "Hello"); map.put(2, "World"); map.put(3, "New"); map.put(4, "Old"); Set<Integer> keys = Set.of(1, 2); List<String> values = map.entrySet() .stream() .filter(ent -> keys.contains(ent.getKey())) .map(Map.Entry::getValue) .collect(Collectors.toList()); System.out.println(values);
输出:
[Hello, World]
添加回答
举报
0/150
提交
取消