Java 如何检查Arraylist中的两个字符串值是否包含在另一个Arraylist中?
我有一个包含两个字符串值的Arraylist,我想检查第二个Arraylist中是否同时存在这些值。由于某种原因,我陷入困境,无法让代码正常工作 这是我的密码:Java 如何检查Arraylist中的两个字符串值是否包含在另一个Arraylist中?,java,arraylist,data-structures,Java,Arraylist,Data Structures,我有一个包含两个字符串值的Arraylist,我想检查第二个Arraylist中是否同时存在这些值。由于某种原因,我陷入困境,无法让代码正常工作 这是我的密码: public static void main(String[] args) { ArrayList <String> list1 = new ArrayList <String>(); list1.add("bob"); list1.add("karen"); Ar
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");
}
}
}
}
publicstaticvoidmain(字符串[]args){
ArrayList list1=新的ArrayList();
清单1.添加(“bob”);
清单1.添加(“卡伦”);
ArrayList list2=新的ArrayList();
列表2.添加(“java”);
清单2.添加(“卡伦”);
清单2.添加(“厨师”);
清单2.添加(“片剂”);
清单2.添加(“杯子”);
清单2.添加(“咖啡”);
for(字符串列表11:列表1){
for(字符串列表22:列表2){
if(列表22.contains(列表11)){
System.out.println(“列表2包含列表1中的字符串”);
}
}
}
}
即使list11中的所有值都不存在于list22中,但其中只有一个值,我的if语句仍在执行中。我的目标是仅当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
中是否存在每个元素。使用以下方法:
if(list2.containsAll(list1))
System.out.println ("List 2 contains the strings from list1");
.containsAll()
如果指定集合(列表1)中的所有对象都是此列表(列表2)的元素,则返回true
,否则返回false
。我更喜欢你的答案。由于我是一名大三学生,所以最好自己制定“逻辑”,而不是使用Spartas解决方案。:)