Печать HashMap в Java - PullRequest
       1

Печать HashMap в Java

90 голосов
/ 07 мая 2011

У меня есть HashMap:

private HashMap<TypeKey, TypeValue> example = new HashMap<TypeKey, TypeValue>();

Теперь я хотел бы просмотреть все значения и распечатать их.

Я написал это:

for (TypeValue name : this.example.keySet()) {
    System.out.println(name);
}

Кажется, что это не работает.

В чем проблема?

РЕДАКТИРОВАТЬ: Другой вопрос: основана ли эта коллекция на нуле?Я имею в виду, если он имеет 1 ключ и значение будет равным 0 или 1?

Ответы [ 15 ]

2 голосов
/ 17 сентября 2018

Для меня эта простая строка работала хорошо:

Arrays.toString(map.entrySet().toArray())
1 голос
/ 04 марта 2019

Полезно для быстрой печати записей в HashMap

System.out.println(Arrays.toString(map.entrySet().toArray()));
1 голос
/ 06 января 2017

Если карта содержит коллекцию в качестве значения, другие ответы требуют дополнительных усилий для преобразования их в строки, например Arrays.deepToString(value.toArray()) (если это карта значений списка) и т. Д.

Я сталкивался с этими проблемами довольно часто и наткнулся на универсальную функцию для печати всех объектов, используя ObjectMappers. Это очень удобно во всех местах, особенно во время экспериментов, и я бы порекомендовал вам выбрать этот способ.

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;

public static String convertObjectAsString(Object object) {
    String s = "";
    ObjectMapper om = new ObjectMapper();
    try {
        om.enable(SerializationFeature.INDENT_OUTPUT);
        s = om.writeValueAsString(object);
    } catch (Exception e) {
        log.error("error converting object to string - " + e);
    }
    return s;
}
0 голосов
/ 10 июня 2019
map.forEach((key, value) -> System.out.println(key + " " + value));

Использование функций Java 8

0 голосов
/ 30 декабря 2016

Вы можете использовать Entry класс, чтобы легко читать HashMap.

for(Map.Entry<TypeKey, TypeKey> temp : example.entrySet()){
    System.out.println(temp.getValue()); // Or something as per temp defination. can be used
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...