繁体   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