¿Cómo particionar una lista por predicado usando java8?

Tengo una listaa que quiero dividir en pocas listas pequeñas.

diga todos los elementos que contiene con "aaa", todo lo que contiene con "bbb" y algunos predicados más.

¿Cómo puedo hacerlo usando java8?

yo vi estoenviar pero solo se divide en 2 listas.

public void partition_list_java8() {

    Predicate<String> startWithS = p -> p.toLowerCase().startsWith("s");

    Map<Boolean, List<String>> decisionsByS = playerDecisions.stream()
            .collect(Collectors.partitioningBy(startWithS));

    logger.info(decisionsByS);

    assertTrue(decisionsByS.get(Boolean.TRUE).size() == 3);
}

yo vi estoenviar, pero era muy antiguo, antes de Java 8.

Respuestas a la pregunta(2)

Su respuesta a la pregunta