簡體   English   中英

如何檢查Arraylist中的兩個String值是否包含在另一個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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM