为什么列表类的contains()参数与containsAll()不同?

时间:2015-03-20 15:13:53

标签: java collections

您好我检查了Params of Contains方法和ContainsAll方法。

boolean containsAll(Collection<?> c);

boolean contains(Object o);

似乎都会接受Object。两者之间是否有任何区别。

4 个答案:

答案 0 :(得分:2)

不,他们都不接受对象。我们假设你有一个集合x:

第一种方法(x.containsAll(c))接受Collection c,如果该集合中的所有元素也包含在x中,则返回true。

第二个(x.contains(o))接受Object o,如果该对象包含在x中,则返回true。

答案 1 :(得分:2)

contains和containsAll之间的区别在于包含检查列表中是否存在1个Object(参数),而containsAll检查列表是否包含给定集合中的所有元素(因此方法名称中的all)。

此外,containsAll可以接受Object,因为Object是Java中每个类的超类。但是,如果您传递的Object不是Collection的实例,则在运行时将出现ClassCastException。

答案 2 :(得分:0)

是的,有区别。 containsAll不接受Object。它只接受一个对象集合。

答案 3 :(得分:0)

以下方法接受任何类型,因为所有类型都来自Object

contains(Object o);

以下方法接受任何类型的集合,因为使用了通配符?

containsAll(Collection<?> c);