我有:
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,为什么?
答案 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