使用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没有返回值。您能解释一下您的代码做了什么,而不是简单地说出来吗“请为我简化一下”?