-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)在问“是否two包含对象onlyOne?”。答案是不”。

为了取得更大的成功,请尝试以下操作:

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

你没有给它一个整数你给它一个参考ArrayList<Integer>

你需要把整数从OnlyOne使用中拉出来OnlyOne.get(0)

于 2013-07-15T14:39:29.310 回答
0

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

如果此列表包含指定元素,则返回 true。更正式地说,当且仅当此列表包含至少一个元素 e 满足 (o==null ? e==null : o.equals(e)) 时,才返回 true。

指定者:List 中的 contains(...),覆盖:AbstractCollection 中的 contains(...) 参数:o 要测试此列表中是否存在的元素 返回:如果此列表包含指定元素,则为 true

于 2013-07-15T14:42:13.603 回答
0

OnlyOne 是 ArrayList 的一个实例,而不是 Integer

请参阅 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 回答