Jay:
El uso de un arroyo, cómo ordenar una lista de objetos por campo (en mi caso, componentCode
) que tiene el máximo número de duplicados, y luego encontrar distinta
He intentado algo como esto, pero la forma de añadir el tamaño de los duplicados cuando se ordenan.
List<String> conflictingComponentsCode = componentWarnings.stream()
.sorted(Comparator.comparing(ComponentErrorDetail::getComponentCode))
.map(ComponentErrorDetail::getComponentCode)
.distinct()
.collect(Collectors.toList());
Ana :
Muy similar a la opción @nafas:
List<String> conflictingComponentsCode = componentWarnings.stream()
.map(ComponentErrorDetail::getComponentCode)
.collect(Collectors.groupingBy(Function.identity(), Collectors.counting()))
.entrySet()
.stream()
.sorted(Map.Entry.<String, Long>comparingByValue().reversed())
.map(Map.Entry::getKey)
.collect(Collectors.toList());
Puede comprobar esta pregunta para otro ejemplo de la agrupación por cuenta: Grupo mediante recuento en Java API 8 corriente