2016-08-24 31 views
3

にマップ我々は、Java 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()がありますここで2回呼び出されます。周りには道がありますか?

答えて

13

さてあなたは、マッピングステップの後にフィルタリングを行うことができます。

x.stream().map(s -> m(s.getKey())).filter(Objects::nonNull).collect(Collectors.toList()); 
関連する問題