首页 > 解决方案 > 从 HashMap 打印值不返回值本身

问题描述

我有一个 HashMap 如下:

HashMap<Integer, List<MyClassObj>> hmap = new HashMap<Integer, List<MyClassObj>>();

在一个循环中,我追加到一个列表,然后我放入一个键值对,其中列表是我的hmap对象的值

如何为每个键提取列表中的值?

for (Integer k: hmap.keySet()) {
    String key = k.toString();
    String value = hmap.get(k).toString();
    System.out.println(key + " " + value);
}

这输出:

43115 [mypackage@176f3f8, mypackage@176f3f8, mypackage@176f3f8]
40715 [mypackage@176f3f8, mypackage@176f3f8, mypackage@176f3f8]

为什么这会返回我的包裹和哈希键?

如何查看每个列表的内容?

标签: javahashmap

解决方案


您需要覆盖类toString()中的方法MyClassObj

例如,假设您的对象具有name并且age

@Override
public String toString() { 
    return "Name: '" + this.name + "', Age: '" + this.age + "'";
} 

然后,您需要遍历 的元素List并将它们打印出来(使用toString()方法)。例如,

for(int i = 0; i < youObjectInstance.size(); i++) {
    System.out.println(youObjectInstance.get(i).toString());
}

作为一般建议,您应该toString()为您创建的几乎每个对象覆盖方法,以便您可以根据用例以方便的格式打印它。


推荐阅读