1. 概述
在我们的上一篇教程《Java HashMap指南》中,我们展示了如何在Java中使用HashMap。在这篇简短的教程中,我们将学习如何根据一个键列表从HashMap中获取子映射。
2. 使用Java 8流
例如,假设我们有一个HashMap和一个键列表:
Map<Integer, String> map = new HashMap<>();
map.put(1, "A");
map.put(2, "B");
map.put(3, "C");
map.put(4, "D");
map.put(5, "E");
List<Integer> keyList = Arrays.asList(1, 2, 3);
我们可以使用Java 8流根据keyList
获取子映射:
Map<Integer, String> subMap = map.entrySet().stream()
.filter(x -> keyList.contains(x.getKey()))
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
System.out.println(subMap);
输出结果如下:
{1=A, 2=B, 3=C}
3. 使用retainAll()
方法
我们可以获取HashMap的keySet
,然后使用retainAll()
方法移除所有键不在keyList
中的条目:
map.keySet().retainAll(keyList);
请注意,此方法会修改原始地图。 如果我们不想影响原始地图,可以先使用HashMap的复制构造函数创建一个新的地图:
Map<Integer, String> newMap = new HashMap<>(map);
newMap.keySet().retainAll(keyList);
System.out.println(newMap);
输出与上述相同。
4. 总结
总之,我们了解了两种从HashMap中根据键列表获取子映射的方法。