我有一个包含两个String值的Arraylist,我想检查第二个Arraylist中是否同时存在这些值。由于某种原因,我陷入了困境,并且我的代码无法正常工作。
这是我的代码:
public static void main(String[] args) {
ArrayList <String> list1 = new ArrayList <String>();
list1.add("bob");
list1.add("karen");
ArrayList <String> list2 = new ArrayList <String>();
list2.add("java");
list2.add("karen");
list2.add("cook");
list2.add("tablet");
list2.add("cup");
list2.add("coffee");
for (String list11 : list1) {
for (String list22 : list2) {
if (list22.contains(list11)){
System.out.println ("List 2 contains the strings from list1");
}
}
}
}
我的if语句正在执行,即使list11中的所有值都不存在于list22中,但其中只有一个。我的目标是仅在list1中的所有值都存在于list2中时才执行if语句,而无需硬编码任何内容,因为list1最终会增长。
我究竟做错了什么?
由于您要检查的list2
是超集list1
,因此for循环应如下所示:
boolean allElementsPresent = true;
for (String list11 : list1) {
if (!list22.contains(list11)){
allElementsPresent = false;
}
}
if(allElementsPresent){
System.out.println ("List 2 contains the strings from list1");
}
无需遍历list2
对象。您只需要迭代list1
检查每个元素是否存在list2
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句