2017-11-30 7 views
-3

filter을 사용하여 코드를 어떻게 단순화 할 수 있습니까? 이 같은자바 8 (필터 포함)을 사용하여 코드 단순화

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())); 
+0

예, 죄송 합니다만 지금 수정했습니다 –

+0

'if'조건이 거짓 일 때 'ps ->'lambda가 반환하지 않았기 때문에 컴파일되지 않습니다. – slim

+0

"간단하게 해주십시오 *"라고 말하는 대신 코드가하는 것을 설명 할 수 있습니까? – Zabuza

답변

3

뭔가해야한다 : 나는 가정하고

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)); 

이미 로컬 변수 람다 표현 내에서 사용이효과적으로 최종 또는 최종해야한다는 것을 알고있다.