我遇到了一段代码,
List<String> a = new ArrayList<String>();
a.add("A");
a.add("B");
a.add("C");
List<String> b = new ArrayList<String>();
b.add("A");
b.add("B");
b.add("C");
System.out.println("a.contains(b)"+a.contains(b));
返回false,我的预期是true
值。
我惊呆了,看到contains
提供的java
方法的这种行为。这是预期的行为,以及contains
List
方法的用法
答案 0 :(得分:6)
a.contains(b)
项检查是单个元素b
包含在列表a
中,在您的示例中显然是错误的,因为a
的所有元素都不是List
。
您正在寻找a.containsAll(b)
,它会检查Collection
中是否存在b
a
中的所有元素。
阅读Javadoc:
/**
* Returns <tt>true</tt> if this list contains the specified element.
* More formally, returns <tt>true</tt> if and only if this list contains
* at least one element <tt>e</tt> such that
* <tt>(o==null ? e==null : o.equals(e))</tt>.
* ...
*/
boolean contains(Object o);
/**
* Returns <tt>true</tt> if this list contains all of the elements of the
* specified collection.
* ...
*/
boolean containsAll(Collection<?> c);
答案 1 :(得分:1)
contains
检查列表中是否存在单个元素。在检查列表是否包含另一个列表的所有元素时,您希望使用containsAll
。
List<String> a = new ArrayList<String>();
a.add("A");
a.add("B");
a.add("C");
List<String> b = new ArrayList<String>();
b.add("A");
b.add("B");
b.add("C");
//Both of these will print true
System.out.println("a.contains(\"B\"): " + a.contains("B"));
System.out.println("a.containsAll(b): " + a.containsAll(b));