1

まず、文字列の ArrayList を作成しました。

List<List<String>> array1 = new ArrayList<List<String>>();

次に、データを入力して印刷した後:

[John, Smith, 120]
[Albert, Einstein, 170]

ここで、リストをループして、say と比較したいString[] array2 = {"Albert", "Einstein", "170"}と思います。これまでに試しました。

if (array1.get(i).equals(array2)) { blah }

ただし、これは機能していません。基本的には、arraylist をトラバースして、array2 が一致するかどうかを確認します。どうすればこれを機能させることができますか?

4

3 に答える 3

8

リストは単に配列と同じではありません。これに対する最も簡単な修正は、最初に配列をリストでラップすることです。

if (array1.get(i).equals(Arrays.asList(array2))

equals次に、各アイテムに対して順次等価性チェックを実行する実装を使用します。

最初に一致するエントリを見つけたいだけの場合は、indexOfLouisの回答に従って使用することもできます。

また、配列でない場合は変数を呼び出さないことを強くお勧めします。array1

最後に、 (たとえば)名前と年齢を使用して実際のList<String>データ構造を作成する必要をなくすためにラッパーとして使用している場合は、次のことを行わないでください。クラスを作成すると、次のようになります。Person

List<Person> people = new ArrayList<Person>();
Person testPerson = new Person("Albert", "Einstein", 170);

...平等とハッシュを適切に実装すれば、うまくいくでしょう。あなたのコードは、そのように読んで維持するのがはるかに簡単になります。

于 2012-09-11T18:24:39.433 に答える
2
return listOfListsOfStrings.indexOf(Arrays.asList(arrayOfStrings));

リスト内にその配列に一致するものがあるかどうかを調べます。i番目のリストが配列と一致する場合はiを返し、一致するものが見つからない場合は-1を返します。forループも必要ありません。

于 2012-09-11T18:24:32.307 に答える
1

あなたの与えられた例によれば、両方ともリストです。したがって、 list1.containsAll(list2) 、つまり conatinsAll メソッドで解決できるかどうか試してください。それが役に立てば幸い

ここにも例がありますJava.util.ArrayList.containsAll でバグを見つけましたか?

于 2012-09-11T18:35:25.513 に答える