2010-12-01 8 views

Respuesta

33

mayoría de las colecciones aceptan Collection como argumento del constructor:

List<String> keyList = new ArrayList<String>(map.keySet()); 
List<String> valueList = new ArrayList<String>(map.values()); 
+0

Ahh, tiene sentido . ¡Guay! –

+0

Tanto LinkedHashMap como List tienen un orden, por lo que espero que el resultado deseado sea que las listas tengan el mismo orden que el mapa. Sin embargo, utiliza un conjunto como un tipo intermedio (el valor de retorno de map.keySet()), que no tiene un orden. Como tal, no se garantiza que keyList tenga el mismo orden que el mapa (tenga en cuenta, sin embargo, que map.values ​​() devuelve una colección en lugar de un conjunto, por lo que no tiene ningún problema. [Eliminado más acerca de 'values ​​() 'Debido a que se basaba en que malinterpreté la documentación] – Jasper

+2

Tenía curiosidad sobre map.keySet() y revisé el código. Para LinkedHashMap esto devuelve LinkedHashMap $ LinkedKeySet, que TIENE un orden predecible (el de la fuente LinkedHashMap), solo al igual que map.values ​​(). Por lo tanto, el código anterior funcionará como se esperaba, y terminará con dos listas donde lista clave [n] ==> valueList [n]. – Luke

Cuestiones relacionadas