Java8过滤器收集两种类型的值

Viv*_*oel 3 java lambda java-8 java-stream

有没有办法在java 8过滤器中收集过滤和未过滤的值?

一种方法是:

.filter( foo -> {
    if(!foo.apply()){
   // add to required collection
    }
    return foo.apply();
  }
Run Code Online (Sandbox Code Playgroud)

还有更好的选择吗?

JB *_*zet 6

 Map<Boolean, List<Foo>> map = 
     collection.stream().collect(Collectors.partitioningBy(foo -> foo.isBar());
Run Code Online (Sandbox Code Playgroud)