Quais são as características de um Collector?
São três.
Question
Quais são as características de um Collector?
Less Short Answer
Elas são definidas no enum Collector.Characteristics, e a implementação da Stream API as usa para saber como pode conduzir o seu collector.
As Três Características
- CONCURRENT — indica que esse collector suporta concorrência na Stream API: uma stream paralela pode usá-lo.
- UNORDERED — você está coletando dados em um container que não se importa com a ordem em que recebe os elementos. É o caso de
Collectors.toSet(), por exemplo. Essa propriedade pode ser usada para relaxar algumas restrições no cálculo de streams paralelas. - IDENTITY_FINISH — o finisher do seu collector é a função identidade, então a implementação não precisa chamá-lo. É o caso de
Collectors.toList()ouCollectors.toSet(), mas não é o caso deCollectors.joining().
One Last Word
Definir a característica CONCURRENT como verdadeira não torna seu collector concorrente magicamente — fornecer uma implementação thread-safe é responsabilidade sua.