2つのマップで交差を実行する方法java.util.Map
またはutilはありますか?(「キー」によって2つのマップを交差させるため)
何も見つかりません。私はいつでも独自の交差ロジックを実装できますが、これを実行するjava.util.*
クラスの1つにすでに何らかの操作があることを望んでいました。
2つのマップで交差を実行する方法java.util.Map
またはutilはありますか?(「キー」によって2つのマップを交差させるため)
何も見つかりません。私はいつでも独自の交差ロジックを実装できますが、これを実行するjava.util.*
クラスの1つにすでに何らかの操作があることを望んでいました。
どうですか:
Map map1 = ...;
Map map2 = ...;
Map result = new ...(map1);
result.keySet().retainAll(map2.keySet());
また:
Map map1 = ...;
Map map2 = ...;
Set result = new ...(map1.keySet());
result.retainAll(map2.keySet());
Guavaを使用している場合は、を使用Maps.difference
してオブジェクトを取得できます。このオブジェクトから、およびをマップとしてMapDifference
抽出できます。(開示:私はグアバに貢献します。)entriesInCommon()
entriesDiffering()
GuavaSets.intersection(Set, Set)
は、各マップのkeySetをパラメーターとして渡して、この作業を実行する必要があります。
交差をテストするには、containsAll()操作を使用できます。'このセットに指定されたコレクションのすべての要素が含まれている場合、trueを返します。指定されたコレクションもセットである場合、このセットのサブセットであれば、このメソッドはtrueを返します。
これらの交差する要素のコレクションを取得するには、代わりにretainAll()操作を使用できます。
これらの方法は両方ともここにあります
http://docs.oracle.com/javase/1.4.2/docs/api/java/util/Set.html
apache c ollectionUtils#intersectionをお勧めします
以下をせよ:
Collection intersection=
CollectionUtils.intersection(map1.keySet(),map2.keySet());
1つのマップのキーをループして、それらが2番目のマップにあるかどうかを確認します。
private Map getIntersection(Map mapOne, Map mapTwo)
{
Map intersection = new HashMap();
for (Object key: mapOne.keySet())
{
if (mapTwo.containsKey(key))
intersection.put(key, mapOne.get(key));
}
return intersection;
}