JavaのHashMapからサブマップを取得する
1. 概要
以前のチュートリアルであるJavaHashMap のガイドでは、JavaでHashMapを使用する方法を示しました。
この短いチュートリアルでは、キーのリストに基づいて HashMapからサブマップを取得する方法を学習します。
2. Java8ストリームを使用する
たとえば、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. reservedAll()メソッドを使用します
マップのkeySetを取得し、 reservedAll()メソッドを使用して、キーがkeyListにないすべてのエントリを削除できます。
map.keySet().retainAll(keyList);
このメソッドは元のマップを編集することに注意してください。 元のマップに影響を与えたくない場合は、最初にHashMapのコピーコンストラクターを使用して新しいマップを作成できます。
Map<Integer, String> newMap = new HashMap<>(map);
newMap.keySet().retainAll(keyList);
System.out.println(newMap);
出力は上記と同じです。
4. 結論
要約すると、キーのリストに基づいて HashMapからサブマップを取得する2つの方法を学びました。