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 - 确保容量无法识别

java - 什么是用户自定义类加载器?

java - 在建筑物中创建 "windows"的循环? - Java Swing

java - ArrayList<> 中元素之间的 Line2D

java - Arraylist 将第一个元素生成为 null

javascript - JS - React - map() 方法对元素索引进行过滤(仅在索引满足条件时运行)

java - 在 IDEA 12.1.6 中禁用 scala 模板的导入折叠

java - 更新数据库时出现 MySQL 错误 [1064]

Javascript:对嵌套 for 循环的工作方式感到困惑

C 编程 : Help Understanding for loop