51

たとえば、いくつかの要素を分割する場合は、次のようにすることができます。

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は のサブケースにすぎませんgroupingBy。前者は aPredicateをパラメーターとして受け入れ、後者は a を受け入れますがFunction、パーティションは通常のグループ化関数としてのみ表示されます。

したがって、同じコードはまったく同じことを行います。

 Stream.of("I", "Love", "Stack Overflow")
       .collect(Collectors.groupingBy(s -> s.length() > 3))
       .forEach((k, v) -> System.out.println(k + " => " + v));

これも結果になりMap<Boolean, List<String>>ます。

partioningBy代わりに使用する必要がある理由はありますgroupingByか?ありがとう

4

5 に答える 5

19

partitioningByMapキーが単なるboolean.

(意味を明確にするpartitioningByのにも役立ちます。データを分割するためにブール条件が使用されていることを効果的に理解するのに役立ちます。)

于 2015-01-16T22:17:12.373 に答える