una - recorrer hashmap java




¿Cómo convertir un mapa a la lista en Java? (9)

¿Cuál es la mejor manera de convertir un Map<key,value> en un List<value> ? ¿Solo iterar sobre todos los valores e insertarlos en una lista o estoy pasando por alto algo?


Aquí está el método genérico para obtener valores del mapa.

public static <T> List<T> ValueListFromMap(HashMap<String, T> map) {
    List<T> thingList = new ArrayList<>();

    for (Map.Entry<String, T> entry : map.entrySet()) {
        thingList.add(entry.getValue());
    }

    return thingList;
}

El problema aquí es que el Map tiene dos valores (una clave y un valor), mientras que una List solo tiene un valor (un elemento).

Por lo tanto, lo mejor que se puede hacer es obtener una List de las claves o los valores. (A menos que hagamos una envoltura para aferrarnos al par clave / valor).

Digamos que tenemos un Map :

Map<String, String> m = new HashMap<String, String>();
m.put("Hello", "World");
m.put("Apple", "3.14");
m.put("Another", "Element");

Las claves como una List se pueden obtener creando una nueva ArrayList partir de un Set devuelto por el método Map.keySet :

List<String> list = new ArrayList<String>(m.keySet());

Mientras que los valores como una List se pueden obtener creando una nueva ArrayList de una Collection devuelta por el método Map.values :

List<String> list = new ArrayList<String>(m.values());

El resultado de obtener la List de claves:

Apple
Another
Hello

El resultado de obtener la List de valores:

3.14
Element
World

Si desea asegurarse de que los valores en la List<Value> resultante List<Value> estén en el orden de las Map<Key, Value> entrada Map<Key, Value> , debe "pasar por" el SortedMap alguna manera.

Comience con una implementación concreta de SortedMap (como TreeMap ) o inserte su Map entrada en un SortedMap antes de convertirlo en List . p.ej:

Map<Key,Value> map;
List<Value> list = new ArrayList<Value>( new TreeMap<Key Value>( map ));

De lo contrario, obtendrá cualquier orden nativo que proporcione la implementación del Map , que a menudo puede ser algo más que el ordenamiento de claves naturales (Pruebe Hashtable o ConcurrentHashMap , para la variedad).


Supongo que quieres convertir los valores contenidos en el Map a una list ? Lo más fácil es llamar al método de values() de la interfaz del Map . Esto devolverá la Collection de objetos de valor contenidos en el Map .

Tenga en cuenta que esta Collection está respaldada por el objeto Map y cualquier cambio en el objeto Map se reflejará aquí. Entonces, si desea una copia separada no vinculada a su objeto Map , simplemente cree un nuevo objeto List como un ArrayList pase el valor Collection como se muestra a continuación.

ArrayList<String> list = new ArrayList<String>(map.values());

una lista de que?

Asumiendo que map es tu instancia de Map

  • map.values() devolverá una Collection contiene todos los valores del mapa.
  • map.keySet() devolverá un Set contiene todas las claves del mapa.

map.entrySet() le ofrece una colección de objetos Map.Entry que contienen tanto la clave como el valor. luego puede transformar esto en cualquier objeto de colección que desee, como el new ArrayList(map.entrySet()) ;


    Map<String, Integer> map = new HashMap<String, Integer>();
    map.put("java", 20);
    map.put("C++", 45);

    Set <Entry<String, Integer>> set = map.entrySet();

    List<Entry<String, Integer>> list = new ArrayList<Entry<String, Integer>>(set);

podemos tener un par de clave y valor en la lista. También se puede obtener la clave y el valor utilizando Map.Entry al iterar sobre la lista.


"Map<String , String > map = new HapshMap<String , String>;
 map.add("one","java");
 map.add("two" ,"spring");
 Set<Entry<String,String>> set =  map.entrySet();
 List<Entry<String , String>> list = new ArrayList<Entry<String , String>>    (set);
 for(Entry<String , String> entry : list ) {
   System.out.println(entry.getKey());
   System.out.println(entry.getValue());
 } "

List<Value> list = new ArrayList<Value>(map.values());

asumiendo:

Map<Key,Value> map;




map