使用Java8(带过滤器)简化代码

使用Java8(带过滤器)简化代码,java,filter,java-stream,Java,Filter,Java Stream,如何使用过滤器简化代码 return new LinkedList<>(pageNames.stream().map(ps -> { DocumentModel docModel = new DocumentModel(); if (pages.contains(ps.getPageName())) { String pageName = ps.getPageName();

如何使用
过滤器简化代码

return new LinkedList<>(pageNames.stream().map(ps -> {
           DocumentModel docModel = new DocumentModel();
           if (pages.contains(ps.getPageName())) {
               String pageName = ps.getPageName();
               docModel.setSopName(pageName);      
               docModel.setSopContent(pageApi.getPageContent(clientCode, pageName));
               docModel.setAverageRating(pageApi.getRating(clientCode, pageName));}
               return docModel;

        }).collect(toList()));
返回新的LinkedList(pageNames.stream().map(ps->{
DocumentModel docModel=新的DocumentModel();
if(pages.contains(ps.getPageName())){
字符串pageName=ps.getPageName();
docModel.setSopName(pageName);
docModel.setSopContent(pageApi.getPageContent(clientCode,pageName));
docModel.setAverageRating(pageApi.getRating(clientCode,pageName));}
回归模型;
}).collect(toList());

类似的操作应该可以:

return pageNames.stream()
         .filter(ps -> pages.contains(ps.getPageName()))
         .map(ps -> {
               DocumentModel docModel = new DocumentModel();
               docModel.setSopName(ps.pageName());   
               docModel.setSopContent(pageApi.getPageContent(clientCode, ps.pageName))    
               return docModel;
           })
         .collect(Collectors.toCollection(LinkedList::new));

我假设您已经知道lambda表达式中使用的任何局部变量都必须是有效的final或final。

是的,对不起,我现在更正了输入错误。这不会编译,因为当
if
条件为false时,
ps->
lambda没有返回值。您能解释一下您的代码做了什么,而不是简单地说出来吗“请为我简化一下”?