¿Cómo hacer que Collectors.groupingBy() devuelva un LinkedHashMap ordenado?
Tengo una lista:
{Gato, Gato, Gato, Perro, Perro, Rata}
Quiero devolver un Map ordenado, ya sea ascendente o descendente a mi elección, donde las claves sean los nombres de los animales y los valores sean su frecuencia de aparición.
Por ejemplo:
{
Rata: 1
Perro: 2
Gato: 3
}
Al usar
LinkedHashMap<String, Long> map =
lista
.stream ()
.collect (Collectors.groupingBy (Function.identity (), LinkedHashMap :: new, Collectors.counting ()));
Puedo tener un LinkedHashMap, pero no está ordenado.
Sé que puedo ordenar el Map después, ¿pero hay alguna manera de hacerlo en un solo stream?
¡Gracias!
davy.ai
Sí, se puede ordenar el
LinkedHashMap
en un solo flujo. Puede utilizar el métodoCollectors.toMap ()
para crear unLinkedHashMap
con el ordenamiento deseado. La sintaxis para esto es:La parte
(oldValue, newValue) -> oldValue
se utiliza para manejar claves duplicadas y la parteLinkedHashMap :: new
se utiliza para crear elLinkedHashMap
con el ordenamiento deseado.