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中根据键列表获取子映射的方法。