-3

コレクション 1:

{ "tom", "dick", "harry", "john", "smith", "dick" };

コレクション 2:

{ "Rachel", "dick", "tom", "dick", "smith","harry","Orion"}

重複は 2 回カウントする必要があります。

4

2 に答える 2

4

セットの交差を実行して、結果のセットのサイズを取得できます。

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 です。これはあなたが望むものだと思います。retainAllBag

于 2012-09-19T05:19:45.953 に答える
1

1.メソッドを使用Collections.frequency()して、コレクション内で特定の String オブジェクトが発生した回数を確認します。

2.これで、他のコレクションの各オブジェクトの頻度を確認できます。別のコレクションでいずれかのオブジェクトの頻度カウントがゼロの場合、このコレクションにそのオブジェクトがないことは明らかであるため、これらのコレクションは等しくありません。

3. 1 番目のコレクションのすべてのオブジェクトが 2 番目のコレクションに存在する場合は、ポイント 2 で述べたのと同じ方法で 2 番目のコレクションのオブジェクトをチェックしてみてください。

于 2012-09-19T05:22:32.300 に答える