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

Java 如何重构在字符串列表中搜索文本的for循环,java,for-loop,arraylist,refactoring,java-stream,Java,For Loop,Arraylist,Refactoring,Java Stream,我想重构下面的代码以利用Stream()方法,但不知道如何实现 给定可变句子是字符串列表,并预先填充: “杰克去公园了”, “玛丽待在家里”, “克里斯去上班了” 如何使用Stream()返回包含单词“home”的整行 列出句子=新建ArrayList(); 添加(“杰克去公园”); 添加(“玛丽待在家里”); 添加(“Chris去工作了”); for(int I=0;Istr.contains(“home”)) .findAny() if(result.isPresent()){ 返回resu

我想重构下面的代码以利用Stream()方法,但不知道如何实现

给定可变句子是字符串列表,并预先填充: “杰克去公园了”, “玛丽待在家里”, “克里斯去上班了”

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

列出句子=新建ArrayList();
添加(“杰克去公园”);
添加(“玛丽待在家里”);
添加(“Chris去工作了”);
for(int I=0;I<句子.size();I++){
if(句子.get(I).contains(“home”)){
返回句子。获取(I);
}
}
或者您可以检查
可选
的结果,此代码将与您的代码完全相同:

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

if (result.isPresent()) {
    return result.get();
}
可选结果=句子.stream()
.filter(str->str.contains(“home”))
.findAny()
if(result.isPresent()){
返回result.get();
}

感谢Chmilevfa提供这两个答案。我试图使用lambda,但无法使其工作。
sentences.stream()
    .filter(str -> str.contains("home"))
    .findAny()
    .orElse("String to return if string which contains home was not found");`
Optional<String> result = sentences.stream()
    .filter(str -> str.contains("home"))
    .findAny()

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