猿问

如何在一次操作中从 Hashmap 中获取多个键的多个值?

我想使用 获取多个键的值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函数可以完成相同的工作?


皈依舞
浏览 327回答 3
3回答

墨色风雨

您可以使用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]

慕标琳琳

您可以获取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]

Qyouu

IntStream.of(1,&nbsp;2) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.map(map::get) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.collect(Collectors.toList());
随时随地看视频慕课网APP

相关分类

Java
我要回答