为什么ArrayList <integer>包含不起作用?</integer>

时间:2013-07-15 14:37:36

标签: java arraylist

我有:

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,为什么?

6 个答案:

答案 0 :(得分:6)

您正在检查Two是否包含列表onlyOne本身

two.containsAll(onlyOne)就是您所需要的。

答案 1 :(得分:3)

因为two.contains(onlyOne)问的问题是“two是否包含对象onlyOne?”。答案是:“不”。

要获得更多成功,请尝试以下方法:

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

或:

boolean check = two.containsAll(onlyOne);

答案 2 :(得分: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)方法。

答案 3 :(得分:0)

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

的引用

您需要使用OnlyOne

OnlyOne.get(0)中提取整数

答案 4 :(得分:0)

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

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

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

,则返回true

答案 5 :(得分:0)

OnlyOne是ArrayList的实例,不是Integer

请参阅java docs:http://docs.oracle.com/javase/1.4.2/docs/api/java/util/List.html#contains%28java.lang.Object%29