6

OOP Javaでクラスを受講し、私はこの言語に完全に慣れていませんが、それが提供する多くのツールにまだ気付いていないので、単純なものの解決策を暗闇の中で探し回っています。これらの問題をハードコーディングすることはできますが、そこに感じます。を使用してこれを行うためのはるかに簡単な方法ですjava.util

文字列のリストがあると仮定します

String[] stringOne = {"a","b","c", "potato"};
String[] stringTwo = {"potato", "13"};

特定のアイテムがで何回stringTwo発生するかを確認するにはどうすればよいstringOneですか?またはその逆。この問題が発生するたびにダブルループを実行したくない(またはダブルループメソッドを作成したい)。

今、私Collections.frequency()はループを1回だけ使用することをやめていますが、もっと簡単な方法はありますか?ありがとう。

4

1 に答える 1

3

文字列のリストがあると仮定します

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.

于 2013-02-04T19:51:44.417 に答える