例如,如果我打算对某些元素进行分区,我可以执行以下操作:
Stream.of("I", "Love", "Stack Overflow")
.collect(Collectors.partitioningBy(s -> s.length() > 3))
.forEach((k, v) -> System.out.println(k + " => " + v));
Run Code Online (Sandbox Code Playgroud)
哪个输出:
false => [I]
true => [Love, Stack Overflow]
Run Code Online (Sandbox Code Playgroud)
但对我partioningBy来说只是一个子问题groupingBy.虽然前者Predicate在后者a中接受as参数Function,但我只看到一个分区作为正常的分组函数.
所以相同的代码完全相同:
Stream.of("I", "Love", "Stack Overflow")
.collect(Collectors.groupingBy(s -> s.length() > 3))
.forEach((k, v) -> System.out.println(k + " => " + v));
Run Code Online (Sandbox Code Playgroud)
这也导致了Map<Boolean, List<String>>.
那么有什么理由我应该用partioningBy而不是groupingBy?谢谢