【问题标题】:How to check if an arrayList has a value inside of a value [duplicate]如何检查arrayList是否在值内有值[重复]
【发布时间】:2021-12-30 04:19:21
【问题描述】:

如何检查 ArrayList 中的值是否包含一组特定的字母?

ArrayList<String> words = new ArrayList<String>();
        words.add("Wooden Axe");
        words.add("Stone Axe");
        
        if(words.contains("Axe")) {
            //something
        }

比如如何检查值是否包含字符串“Axe”?

【问题讨论】:

  • words 不包含“Axe”,您需要检查 word 中的值。最简单的方法是使用stream(),过滤包含“Axe”的值
  • 您要检查是否有任何单词包含“Axe”,如果为真则执行某项操作,还是要对每个匹配的单词执行某项操作?

标签: java arraylist


【解决方案1】:

如果你想在之后进行处理,你可以这样做:

words.stream()
     .filter(word -> word.contains("Axe")) // you only keep words with "Axe"
     .forEach(word -> System.out.println(word)); // you process them the way you want

【讨论】:

    【解决方案2】:

    可以使用Stream方法allMatch();

    if(words.stream().allMatch(word -> word.contains("Axe"))) {
      //something
    }
    

    【讨论】:

    • 我猜Stream.anyMatch() 更接近 OP 想要的。
    • 我知道他想检查所有字符串,但是如果他想检查数组列表中的至少一个单词是否有“Axe”,anyMatch() 肯定会解决它。
    【解决方案3】:

    对于更复杂的答案,您需要像这样遍历数组列表中的每个项目:

    public static boolean ArrayContainsWord(String match){
      for(String word : words){
       if(word.Contains(match)){
         return true;
       }
      }
      return false;
    }
    

    如果您想找到与您想要的单词匹配的确切单词,那么您可以更改方法“ArrayContainsWord”的返回类型以返回 String 而不是 boolean 和 @987654324 @行,返回单词,找不到时返回null

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-12-28
      • 2011-05-23
      • 2019-09-09
      • 1970-01-01
      • 2011-11-14
      • 1970-01-01
      相关资源
      最近更新 更多