这个问题在这里已经有答案了:
流式和惰性评价(3个答案)
上个月关门了。
我是java新手,正在学习/尝试理解带有流的系统。
在一个示例中,我有以下代码:
private Comment findComment(String author)
{
for(Comments comment : comments) {
if(comment.getAuthor().equals(author)) {
return comment;
}
}
return null;
}
出于培训的目的,我开始用流重写一些旧方法(大多数都是for循环),以获得更多的实践。但是这个小方法让我用javadocs(+google)花了三年多的时间,我仍然不知道出了什么问题——它甚至不会编译:/
以下是我的“新”代码,它将取代上述代码:
private Comment findComment(String author)
{
return comments.stream()
.filter(s -> author.equals(s.getAuthor()))
.findFirst();
}
arraylist注解(当时)只能存储来自作者的一条注解。如果一个作者写了一个新的评论,旧的评论就会被删除。这意味着.findfirst();其实没有必要。
在我看来,应该可以缩小arraylist的范围,直到只剩下一个对象,然后将它返回给return语句。。。我是对的还是忘了什么?
编辑(01.12.2020,10:13):我不得不编辑第一个代码片段。返回语句错误(输入错误…)
1条答案
按热度按时间fkaflof61#
findFirst
返回一个Optional
. 为了转换这个Optional
到Comment
对象,并处理没有Comment
在你做的时候发现的,你可以用orElse
: