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 ? 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);
/**
*如果此列表包含指定的元素,则返回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