マップ全体を反復処理せずに、キーのサブセットに基づいてマップの要素をフィルタリングする 質問する

マップ全体を反復処理せずに、キーのサブセットに基づいてマップの要素をフィルタリングする 質問する

Map<String, ArrayList>とがありますSet<String>。マップ全体を反復処理せずに、マップのキーと文字列のセットを「交差」させて、指定されたキーを持つペアだけが残るようにする方法はありますか? 私の主な懸念は、パフォーマンスと、よりエレガントに実行できるものについて車輪の再発明を行うことです。

ベストアンサー1

ただこうしてください:

map.keySet().retainAll(set);

によるとjavadocキーセットの変更はマップに反映されます。

... セットはマップに基づいているため、マップへの変更はセットに反映され、その逆も同様です。...

デモはこちらです:

var map = new HashMap<String, String>();
map.put("1", "one");
map.put("2", "two");
map.put("3", "three");

var set = new HashSet<String>();
set.add("1");
set.add("3");

map.keySet().retainAll(set);

System.out.println(map); // {1=one, 3=three}

おすすめ記事