Java-列表包含的奇数行为

Java-列表包含的奇数行为,java,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)); List

只是我遇到了一段代码

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));
List a=new ArrayList();
a、 添加(“a”);
a、 添加(“B”);
a、 添加(“C”);
列表b=新的ArrayList();
b、 添加(“A”);
b、 添加(“b”);
b、 添加(“C”);
System.out.println(“a.contains(b)”+a.contains(b));
返回的值为false,我期望的值为
true
value

看到
包含
方法(由
java
提供)的这种行为,我感到震惊。这是预期的行为,在
List
a.contains(b)
检查的是单个元素
b
包含在列表
a
中,这在您的示例中显然是错误的,因为
a
的元素都不是
List

您正在查找
a.containsAll(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);
/**
*如果此列表包含指定的元素,则返回true。
*更正式地说,当且仅当此列表包含
*至少一个元素e使得
*(o==null?e==null:o.equals(e))。
* ...
*/
布尔包含(对象o);
/**
*如果此列表包含
*指定的集合。
* ...
*/
布尔containsAll(集合c);

包含检查列表中是否存在单个元素。检查一个列表是否包含另一个列表的所有元素时,需要使用
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));
List a=new ArrayList();
a、 添加(“a”);
a、 添加(“B”);
a、 添加(“C”);
列表b=新的ArrayList();
b、 添加(“A”);
b、 添加(“b”);
b、 添加(“C”);
//这两个都将打印为真
System.out.println(“a.contains(\'B\”):+a.contains(“B”);
System.out.println(“a.containsAll(b):“+a.containsAll(b));

如果列表a包含“a”、“B”和“C”:它怎么能包含B,另一个列表?
包含的是元素属性(∈), 非子集(⊆) 或者子序列。这种行为是预期的,并且它按预期工作!在提问之前阅读Javadoc怎么样?提问者也可能正在寻找子序列测试(如
String.contains
),在这种情况下,我认为
List
没有相应的方法。@Eran,我知道了,而
a.contains(“a”)
a.contains(“B”)
将返回
true