Java - List的奇怪行为包含

Sug*_*lai -5 java

我刚看到一段代码,

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));
Run Code Online (Sandbox Code Playgroud)

正在返回假我所期望的true价值.

我惊呆了,看到了这个contains方法提供的方法java.这是预期的行为,以及此contains方法的用途List

Era*_*ran 6

a.contains(b)检查是bList中包含的单个元素a,在您的示例中显然是错误的,因为没有任何元素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&nbsp;?&nbsp;e==null&nbsp;:&nbsp;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);
Run Code Online (Sandbox Code Playgroud)