例如,如果我打算分割一些元素,我可以做一些像:
Stream.of("I","Love","Stack Overflow")
.collect(Collectors.partitioningBy(s -> s.length() > 3))
.forEach((k,v) -> System.out.println(k + " => " + v));
其输出:
false => [I]
true => [Love,Stack Overflow]
但是对我来说,partioningBy只是一个groupBy的子案例.虽然前者接受一个谓词作为参数,而后者接受一个函数,但我只是看到一个分区作为一个正常的分组函数.
所以同样的代码完全一样:
Stream.of("I","Stack Overflow")
.collect(Collectors.groupingBy(s -> s.length() > 3))
.forEach((k,v) -> System.out.println(k + " => " + v));
这也导致Map< Boolean,List< String>>.
那么有什么理由我应该使用partioningBy而不是groupBy吗?谢谢