-2

私は持っている:

ArrayList<Integer> onlyOne = new ArrayList<Integer>();
onlyOne.add(Integer.valueOf(3));

ArrayList<Integer> two = new ArrayList<Integer>();
two.add(Integer.valueOf(3));
two.add(Integer.valueOf(4));

boolean check = two.contains(onlyOne);

しかし、これは常にfalse を返します。なぜでしょうか?

4

6 に答える 6

6

リスト自体Twoが含まれているかどうかを確認しています。onlyOne

two.containsAll(onlyOne)必要なものです。

于 2013-07-15T14:41:11.223 に答える
3

「オブジェクトを含んでいますか?」two.contains(onlyOne)という質問をしているからです。答えはノーだ"。twoonlyOne

さらに成功するには、次のようなことを試してください。

boolean check = two.contains(onlyOne.get(0));

また:

boolean check = two.containsAll(onlyOne);
于 2013-07-15T14:39:48.687 に答える
1

このcontains()メソッドは、渡した引数が 内のいくつかのオブジェクトと等しいかどうかを比較するためですArrayList

これは次を返すはずtrueです:

ArrayList<Integer> OnlyOne = new ArrayList<Integer>();
OnlyOne.add(Integer.valueOf(3));

ArrayList<Integer> Two = new ArrayList<Integer>();
Two.add(Integer.valueOf(3));
Two.add(Integer.valueOf(4));

boolean ImCHECK = Two.contains(Integer.valueOf(3));

ArrayList#containsAll(Collection c)メソッドの使用に興味があるかもしれません。

于 2013-07-15T14:39:52.460 に答える
0

boolean java.util.ArrayList.contains(Object o)

このリストに指定された要素が含まれている場合、true を返します。より正式には、このリストに (o==null ? e==null : o.equals(e)) となる要素 e が少なくとも 1 つ含まれている場合にのみ true を返します。

指定: List 内の contains(...)、オーバーライド: AbstractCollection 内の contains(...) パラメータ: o このリスト内の存在をテストする要素 戻り値: このリストに指定された要素が含まれている場合は true

于 2013-07-15T14:42:13.603 に答える
0

OnlyOne は Integer ではなく ArrayList のインスタンスです

Java ドキュメントを参照してください: http://docs.oracle.com/javase/1.4.2/docs/api/java/util/List.html#contains%28java.lang.Object%29

于 2013-07-15T14:42:25.730 に答える
0

あなたはそれに整数を与えていません あなたはそれに参照を与えていますArrayList<Integer>

OnlyOne使用から整数を引き出す必要がありますOnlyOne.get(0)

于 2013-07-15T14:39:29.310 に答える