【问题标题】:How to check if two String values from an Arraylist are contained in another Arraylist?如何检查来自 Arraylist 的两个字符串值是否包含在另一个 Arraylist 中?
【发布时间】:2015-12-26 21:03:20
【问题描述】:

我有一个包含两个字符串值的 Arraylist,我想检查这些值是否 both 存在于第二个 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 最终应该会增长。

我做错了什么?

【问题讨论】:

    标签: java arraylist data-structures


    【解决方案1】:

    使用这个:

    if(list2.containsAll(list1))
        System.out.println ("List 2 contains the strings from list1");
    

    .containsAll() 如果指定集合 (list1) 中的所有对象都是此列表 (list2) 的元素,则返回 true,否则返回 false

    【讨论】:

      【解决方案2】:

      在您的情况下,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 中是否存在每个元素。

      【讨论】:

      • 我更喜欢你的回答。很好地制作自己的“逻辑”,而不是使用 Spartas 解决方案,因为我是一名大三学生。 :)
      猜你喜欢
      • 2019-03-03
      • 1970-01-01
      • 1970-01-01
      • 2013-01-08
      • 2016-03-25
      • 2018-03-26
      • 1970-01-01
      • 2021-01-03
      • 1970-01-01
      相关资源
      最近更新 更多