Imprimiendo un mapa java Mapa – ¿Cómo? [duplicate]

2 minutos de lectura

Avatar de usuario de Gandolf
Gandolf

¿Cómo imprimo información de un mapa que tiene el objeto como valor?

He creado el siguiente mapa:

Map<String, Object> objectSet = new HashMap<>();

El objeto tiene su propia clase con sus propias variables de instancia.

Ya he rellenado el mapa anterior con datos.

he creado un printMap método, pero parece que solo puedo imprimir las claves del mapa

Como hago para obtener el mapa para imprimir el <Object> valores usando un para cada ciclo?

Hasta ahora, tengo:

for (String keys : objectSet.keySet())
{
   System.out.println(keys);
}

Lo anterior imprime las claves. También quiero poder imprimir las variables del objeto.

  • Hace Map solo tengo un keySet ¿método? ¿No tiene otros métodos?

    – Salvador

    21 de abril de 2016 a las 23:36

  • ¿Acabas de intentar println(map)?

    – chrylis -cautelosamente optimista-

    22 de abril de 2016 a las 0:31

  • Además, ‘claves’ no es un buen nombre de variable para lo que en realidad es una clave.

    – símbolo indefinido

    13 de enero a las 18:09

Avatar de usuario de BeUndead
ser no-muerto

Estoy seguro de que hay una buena biblioteca que ya hace este tipo de cosas por ti… Pero para seguir con el enfoque que ya estás usando, Map#entrySet te da un combinado Object con el key y el value. Entonces algo como:

for (Map.Entry<String, Object> entry : map.entrySet()) {
    System.out.println(entry.getKey() + ":" + entry.getValue().toString());
}

hará lo que buscas.


Si está utilizando Java 8, también existe el nuevo enfoque de transmisión.

map.forEach((key, value) -> System.out.println(key + ":" + value));

  • vinculó la función lambda de J8

    – como si

    5 sep 2018 a las 12:51

  • Esta respuesta debería haber sido aceptada. ¡Pobre etiqueta SO! Gracias por publicar.

    –James Drinkard

    19/09/2018 a las 21:27

Puedes utilizar Map.entrySet() método:

for (Map.Entry entry : objectSet.entrySet())
{
    System.out.println("key: " + entry.getKey() + "; value: " + entry.getValue());
}

Hay un conseguir método en HashMap:

for (String keys : objectSet.keySet())  
{
   System.out.println(keys + ":"+ objectSet.get(keys));
}

  • Tendría cuidado al usar este enfoque para aplicaciones sensibles al tiempo porque el método de obtención interna es buscando linealmente O(n) por el valor correspondiente.

    –Quazi Irfan

    2 de enero de 2018 a las 23:56


  • El método get internamente hace una llamada a getNode(hash(key), key) que usa hashing. Hace una búsqueda lineal solo cuando hay una colisión hash.

    – instancia aleatoria de cosa viviente

    3 de enero de 2018 a las 2:51

¿Ha sido útil esta solución?