Convertir un flujo de mapa en un HashMap en Java.
Tengo una estructura de clase similar a
@Data
class Permission
{
String id;
Map<String,String> roles;
}
Tengo una lista de List<Permission>
llamada permissions y estoy intentando obtener los roles de tipo Map<String,String>
de esta lista utilizando streams
de la siguiente manera:
permissions.stream()
.map(Permission::getRoles) // me está dando un Stream<Map<String,String>>
.collect() //¿Cómo recopilarlo en un HashMap?
Para que luego pueda iterar sobre este mapa y obtener un Set<String>
que contenga todas las claves de este HashMap
. En resumen, el objetivo es:
1) obtener un objeto Permission de esta Lista
2) luego obtener el Map
de este objeto
3) y luego poner las claves de todos estos objetos Map
en un Set<String>
keys de manera que tenga todas las claves de los objetos Map
del paso (2)
davy.ai
Para recopilar la secuencia de mapas en un hashmap, puedes usar el método
toMap()
con las funciones de mapeo de clave y valor.El mapeo de clave debe devolver el id del objeto
Permission
, y el mapeo de valor debe devolver los roles del objetoPermission
. El código se vería algo así:Luego, para obtener un conjunto de todas las claves de todos los mapas, puedes usar otra operación de transmisión para aplanar las entradas del mapa en una secuencia de claves, y luego recoger esas claves en un conjunto utilizando el colector
toSet()
. Aquí está el código completo:Esto te dará un conjunto de todas las claves de todos los mapas en la lista de objetos
Permission
.</string,>