Java 8 ordenar por flujo máximo duplicados y luego distinta

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());

introducir descripción de la imagen aquí

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

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=231704&siteId=1
Recomendado
Clasificación