¿Cuál es la mejor manera de convertir Map<key,value>a a List<value>? Simplemente repita todos los valores e insértelos en una lista o ¿estoy pasando por alto algo?
java
list
collections
map
Javaa
fuente
fuente

Respuestas:
asumiendo:
fuente
CollectionaListfuncionaría.keySet()yvalues()generalmente son objetos de ajuste que proporcionan una vista de conjunto o colección de la estructura subyacente (keySet()devuelve un conjunto para enfatizar que no hay engaños). Paravalues(), el objeto devuelto puede ser unList, pero a menudo no lo será. La creación de una Lista real, como usted dice, rompe el enlace, lo que significa que ya no depende del Mapa original. A veces sin embargo, sólo se necesita una lista debido a que algunos API requiere uno - el refuerzo de la regla de que una buena API debe requerir sólo las interfaces más abstractas que puede salirse con la suya ...El problema aquí es que
Maptiene dos valores (una clave y un valor), mientras que unListsolo tiene un valor (un elemento).Por lo tanto, lo mejor que se puede hacer es obtener una
Listde las claves o los valores. (A menos que hagamos un contenedor para mantener el par clave / valor).Digamos que tenemos un
Map:Las claves como a
Listse pueden obtener creando una nueva aArrayListpartir de unaSetdevuelta por elMap.keySetmétodo:Si bien los valores como a
Listse pueden obtener creando uno nuevo aArrayListpartir de un métodoCollectiondevueltoMap.values:El resultado de obtener las
Listclaves:El resultado de obtener los
Listvalores de:fuente
HashMapclasificadas similaresMapserá efectivamente aleatorio.Usando la API de Java 8 Streams.
fuente
map.entrySet()le ofrece una colección deMap.Entryobjetos que contienen clave y valor. luego puede transformar esto en cualquier objeto de colección que desee, comonew ArrayList(map.entrySet());fuente
una lista de que?
Asumiendo que
mapes tu instancia deMapmap.values()devolverá un queCollectioncontiene todos los valores del mapa.map.keySet()devolverá un queSetcontenga todas las claves del mapa.fuente
Supongo que quieres convertir los valores contenidos en el
Mapalist? Lo más fácil es llamar alvalues()método de laMapinterfaz. Esto devolverá losCollectionobjetos de valor contenidos en elMap.Tenga en cuenta que esto
Collectionestá respaldado por elMapobjeto y cualquier cambio en elMapobjeto se reflejará aquí. Entonces, si desea una copia separada no vinculada a suMapobjeto, simplemente cree un nuevoListobjeto comoArrayListpasar el valorCollectioncomo se muestra a continuación.fuente
Puedes hacerlo así
fuente
Si desea asegurarse de que los valores en la resultante
List<Value>están en el orden de las claves de la entradaMap<Key, Value>, debe "ir a través de" deSortedMapalguna manera.O bien comenzar con una concreta
SortedMapaplicación (tal comoTreeMap) o inserte su entradaMapen unaSortedMapantes de la conversión que aList. p.ej:De lo contrario, obtendrá el orden nativo que
Mapproporciona la implementación, que a menudo puede ser algo diferente al orden de las teclas naturales (PruebeHashtableoConcurrentHashMap, para variar).fuente
podemos tener pares de clave y valor en la lista. También podemos obtener clave y valor usando Map.Entry iterando sobre la lista.
fuente
fuente
fuente
Aquí está el método genérico para obtener valores del mapa.
fuente
fuente