🛺
【Java】EntryからMapに変換する
概要
JavaのMapオブジェクトはけっこう使う機会があると思いますが、データをソートして使ったりフィルターしたい時は一度Entryに変換することもあるでしょう。Map→EntryはMapにあるentrySet
メソッドを使えば、簡単にできると思います。
あまりケースとしては無いかもしれませんが、その逆でEntry→Mapを簡単に変換する場合にはどうすれば良いのか、というのを今回メモ書きします。
対応方法
Convert Set<Map.Entry<K, V>> to HashMap<K, V>の記事に、いくつか対応方法が紹介されています。
Java9以降限定ですが、Map.ofEntries
のメソッドを使うと簡単に変換できそうですね。このメソッドはEntryの配列からMapのオブジェクトを変換するものです。(ListやSetでEntryを扱ってる場合は、一度配列に変換する必要があります)
実装サンプル
Java9以降を前提とし、Map.ofEntries
を使った実装サンプルです。
public class MapEntryTest {
public static void main(String[] args) {
// HashMapの初期化
Map<Integer, String> testMap = Map.of(
1, "test1",
2, "test2",
3, "test3"
);
System.out.println(testMap);
// Entryへの変換
Set<Entry<Integer, String>> testEntries = testMap.entrySet();
System.out.println(testEntries);
// HashMapへ戻す(Map.ofEntriesはJava9以降で使用可)
Map<Integer, String> testMap2 = Map.ofEntries(testEntries.toArray(Entry[]::new));
System.out.println(testMap2);
}
}
Discussion