2 つの ArrayList があり、両方にいくつかのオブジェクトが含まれているとします。
Object a = new Object();
Object b = new Object();
Object c = new Object();
Object d = new Object();
ArrayList list1 = new ArrayList();
list1.add(a);
list1.add(a);
list1.add(a);
list1.add(b);
list1.add(b);
list1.add(c);
ArrayList list2 = new ArrayList();
list2.add(a);
list2.add(a);
list2.add(b);
list2.add(c);
list2.add(c);
list2.add(d);
ArrayList output = retainAllButRegardingDoubles(list1, list2);
ここで、他の配列の要素と交差する要素を見つけたいと思いますが、doubles に関してです。「倍精度について」とは、つまり、リスト 1 にオブジェクト A が 3 回含まれ、リスト 2 にオブジェクト A が 2 回含まれている場合、オブジェクト A が両方の配列で少なくとも 2 回出現するため、返される配列にはオブジェクト A が 2 回含まれることになります。
したがって、出力リストは次のようになります。
ArrayList {
a,
a,
b,
c
}
'a' は両方のリストで 2 回、'b' は 1 回、'c' は 1 回出現します。
それを行うためのライブラリはありますか、それとも自分で書く必要がありますか? はいの場合、どのように?