¿Cuál es el propósito de la partición?

Por ejemplo, si tengo la intención de particionar algunos elementos, podría hacer algo como:

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

que salidas:

false => [I]
true => [Love, Stack Overflow]

Pero para mipartioningBy es solo un subcase degroupingBy. Aunque el primero acepta unPredicate como parámetro, mientras que este último unFunction, Acabo de ver una partición como una función de agrupación normal.

Entonces, el mismo código hace exactamente lo mismo:

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

lo que también resulta en unMap<Boolean, List<String>>.

Entonces, ¿hay alguna razón por la que deba usarpartioningBy en lugar degroupingBy? Gracias

Respuestas a la pregunta(4)

Su respuesta a la pregunta