[英]How to check whether the elements of an ArrayList are all contained in another ArrayList
[英]How to check if two String values from an Arraylist are contained in another Arraylist?
我有一個包含兩個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最終應該增大。
我究竟做錯了什么?
用這個:
if(list2.containsAll(list1))
System.out.println ("List 2 contains the strings from list1");
如果指定集合(list1)中的所有對象都是此List (list2)的元素,則.containsAll()
將返回true
否則返回false
。
在你的情況下, 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
是否存在每個元素。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.