コレクション 1:
{ "tom", "dick", "harry", "john", "smith", "dick" };
コレクション 2:
{ "Rachel", "dick", "tom", "dick", "smith","harry","Orion"}
重複は 2 回カウントする必要があります。
セットの交差を実行して、結果のセットのサイズを取得できます。
Set<String> s1 = new HashSet<String>(Arrays.asList(new String[] {"tom", "dick", "harry", "john", "smith", "dick"}));
Set<String> s2 = new HashSet<String>(Arrays.asList(new String[] {"Rachel", "dick", "tom", "dick", "smith", "harry", "Orion"}));
s1.retainAll(s2); // s1 becomes the intersection of s1 & s2
System.out.println("Number of common elements: " + s1.size());
[編集] 質問をもっと注意深く読むべきでした。Set
上記を Apache Commons のBag実装に置き換えると、重複に対しても機能します。
実装では、呼び出しSet
後に s1 のサイズが 4 になりますが、バージョンのサイズは 5 です。これはあなたが望むものだと思います。retainAll
Bag
1.メソッドを使用Collections.frequency()
して、コレクション内で特定の String オブジェクトが発生した回数を確認します。
2.これで、他のコレクションの各オブジェクトの頻度を確認できます。別のコレクションでいずれかのオブジェクトの頻度カウントがゼロの場合、このコレクションにそのオブジェクトがないことは明らかであるため、これらのコレクションは等しくありません。
3. 1 番目のコレクションのすべてのオブジェクトが 2 番目のコレクションに存在する場合は、ポイント 2 で述べたのと同じ方法で 2 番目のコレクションのオブジェクトをチェックしてみてください。