集合接口的containsall方法在java中如何工作?

集合接口的containsall方法在java中如何工作?,java,Java,如果我从集合界面有两个对象列表 清单1={约翰、蒂姆、汤姆} 清单2={John,Tim} 这两个列表都是ArrayList的实例 Java如何知道list2是否包含在带有list1.containsall(list2)的list1中? 我知道Java在containsall()方法的实现中使用contain方法,contain方法使用equal()方法。我理解这些区别,但我不确定Java如何遍历列表1中的元素 因此,如果我使用list1.containsAll(list2),constains

如果我从集合界面有两个对象列表

清单1={约翰、蒂姆、汤姆}

清单2={John,Tim}

这两个列表都是ArrayList的实例

Java如何知道list2是否包含在带有list1.containsall(list2)的list1中?
我知道Java在containsall()方法的实现中使用contain方法,contain方法使用equal()方法。我理解这些区别,但我不确定Java如何遍历列表1中的元素

因此,如果我使用list1.containsAll(list2),constainsAll()方法是通过循环实现的,循环遍历list2的每个对象,如果其中一个元素不在列表1中,则抛出false

所以我的主要问题是JAVA如何知道列表1包含所有元素,而不需要另一个循环来遍历列表1的元素?java是在内部工作还是什么的

我现在知道要做这样的事情,我必须使用

对于(int i=0;i 清单1.get(i).constainsAll(清单2)

,,,
考虑到我必须修改containsAll的代码才能正常工作,并实现get()方法,这对我来说似乎更符合逻辑。

请参阅的实现。您所说的“java如何知道列表1包含了没有另一个循环的所有元素”是什么意思?一个循环就足够检查了,因为当为每个被检查的元素调用“第二个循环”时,“第二个循环”是由
contains
方法完成的。那么,如果列表1没有要迭代的循环,它如何跳到下一个元素?列表2将在方法中实现其第二个循环,但是列表1如何在没有循环的情况下迭代其元素呢;int[]list 2=[1,2,3],,,,若要检查列表2的元素是否在列表1中,需要两个循环,时间复杂度为(list1.length*list2.length)。列表的时间复杂度不同吗?是的。如果检查我提供的链接,可以看到它完全是隐式的。为“list 2”提供了一个循环,因为它循环作为方法参数提供的列表。在该循环中,在“列表1”上调用,另一个循环中的当前对象作为方法参数,其中第二个循环运行。