【问题标题】:java - check if a substring is present in an arraylist of strings in javajava - 检查子字符串是否存在于java中的字符串数组列表中
【发布时间】:2018-01-06 21:54:25
【问题描述】:

假设我有一个具有以下值的数组列表 (arr1):

"string1 is present"
"string2 is present"
"string3 is present"
"string4 is present"

我想看看这个数组列表中是否存在子字符串“string2”。通过遍历arraylist并使用'get' by index我在每个索引处提取元素,然后对'Strings'使用'contains'方法,我搜索'string2'并找到匹配项

for (int i=0;i<arr1.size(); i++)
{
  String s1=arr1.get(i);
  if (s1.contains("string2"))
  {
    System.out.println("Match found");
  }
}

有没有办法使用数组列表本身的“包含”方法并做同样的事情,而不是我循环遍历数组列表并使用“字符串”的“包含”方法来实现这一点。谁能告诉我。

谢谢

【问题讨论】:

    标签: java arraylist


    【解决方案1】:

    您不能使用ArrayList 的contains 方法,因为您无法绕过单独检查每个字符串。

    在 Java 8 中,您可以使用流来隐藏循环:

    boolean found = arr1.stream().anyMatch(s -> s.contains("string2"));
    

    【讨论】:

      【解决方案2】:

      使用 Stream API,您可以检查列表是否包含包含 "string2" 的元素,并像这样打印到控制台:

      arr1.stream()
          .filter(e -> e.contains("string2"))
          .findFirst()
          .ifPresent(e -> System.out.println("Match found"));
      

      但是,您无法避免单独检查每个元素(直到我们找到第一个元素),因为您有兴趣查看特定字符串是否包含特定子字符串。

      【讨论】:

      • 不,不会。 filter(s->s.contains("string2") 会。
      【解决方案3】:

      这是另一种方式(从arrayList中创建一个字符串):

      String listString = String.join(", ", arr1);
      
            if (listString.contains("string2"))
            {
              System.out.println("Match found");
            }
      

      【讨论】:

      • 这假定搜索字符串不包含逗号:-)
      • 是的!忘了提。小心点,如果是逗号,就用一个不用的字符替换即可。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-11-28
      • 1970-01-01
      • 2020-07-06
      • 1970-01-01
      • 1970-01-01
      • 2014-07-29
      • 2013-04-29
      相关资源
      最近更新 更多