java - 如何重构在字符串列表中搜索文本的 for 循环

标签 java for-loop arraylist refactoring java-stream

我想重构以下代码以利用 Stream() 方法,但不知道该怎么做。

鉴于变量 sentences 是一个字符串列表,并且预先填充了: “ jack 去了公园”, “玛丽待在家里”, “克里斯去上类了”

我如何使用 Stream() 返回包含单词“home”的整行

List<String> sentences = new ArrayList<>();
sentences.add("Jack went to the park");
sentences.add("Mary stayed home");
sentences.add("Chris went to work");

for (int I=0; I < sentences.size(); I++) {
   if (sentences.get(I).contains("home")) {
      return sentences.get(I);
   }
}

最佳答案

sentences.stream()
    .filter(str -> str.contains("home"))
    .findAny()
    .orElse("String to return if string which contains home was not found");`

或者你可以检查Optional的结果,这段代码将与你的完全相同:

Optional<String> result = sentences.stream()
    .filter(str -> str.contains("home"))
    .findAny()

if (result.isPresent()) {
    return result.get();
}

关于java - 如何重构在字符串列表中搜索文本的 for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51939004/

相关文章:

java - 我怎样才能缓存一个arraylist

java - 找不到类型为 : class java. util.ArrayList 的返回值的转换器(Spring Boot)

java - 递归迭代

java - Tomcat Java Servlet 路径

java - 计算机唤醒后如何识别 MacOS 上断开的 Java 套接字连接

java - 一个 classe owl api 的父类(super class)

java - 什么会导致 for 循环在应该递增时递减?

JavaScript:如何映射两个对象以获得将第一个对象的 ID 映射到另一个对象的名称的输出?

javascript - 如何在javascript中正确获取json数据

Java - 从旧列表创建新列表,旧列表也被修改