文字列のリストがあると仮定します
String[] stringOne = {"a","b","c", "potato"};
String[] stringTwo = {"potato", "13"};
これらは「配列」であり、「リスト」ではありません。 Arrays.asList(stringOne)
によって参照される配列のリストラッパーですstringOne
。
stringTwoの特定のアイテムがstringOneで何回発生するかを確認するにはどうすればよいですか?
new HashSet(Arrays.asList(stringOne)).retainAll(Arrays.asList(stringTwo))
両方の要素のセットを提供します。
セットの代わりに同様のアプローチを使用すると、Bag
カウントが得られます。
retainAll(Collection coll)
カーディナリティを尊重して、特定のコレクションに含まれていないバッグのメンバーをすべて削除します。つまり、指定されたコレクションcollに指定されたオブジェクトのn個のコピーが含まれ、バッグにm> n個のコピーがある場合、バッグからm〜n個のコピーを削除します。さらに、eがバッグ内のオブジェクトであるが、の場合は、そのコピーのいずれかを!coll.contains(e)
削除します。e
コレクションクラスで使用される同等性の概念は、辞書式順序で比較するためObject.equals(object)
にオーバーライドすることによって定義されるものです。java.lang.String
If you need the result back in an array, try myBag.toArray(new String[0])
which dumps the contents to a string. The argument is explained in the documentation, but in short, its a type-hint that works around Java's broken array variance.