2016-08-24 2 views
3
우리는 자바 8 이하의 코드 리팩토링하려고

:Java8 : 같은 방법으로 출력에 필터지도

List<String> list = new ArrayList<>(); 
Iterator<Obj> i = x.iterator(); 
while (i.hasNext()) { 
    String y = m(i.next().getKey()); 
    if (y != null) { 
     list.add(y); 
    } 
} 
return list; 

지금까지 우리가 올라와있다 :

return x.stream().filter(s -> m(s.getKey()) != null).map(t -> m(t.getKey())).collect(Collectors.toList()); 

그러나 방법 m()입니다 여기에서 두 번 호출됩니다. 주위에 방법이 있습니까?

x.stream().map(s -> m(s.getKey())).filter(Objects::nonNull).collect(Collectors.toList()); 
:

답변

13

것은 그럼 당신은 매핑 단계 이후 필터링을 수행 할 수 있습니다