Java HashMap内容转为字符串

6

请在您打分之前阅读评论!

我想要将HashMap的内容转换为String,就像使用Arrays.toString(arrayList)ArrayList转换为String一样。

这是否可能? 有简单的方法吗?

我必须使用Iterator进行迭代和附加吗?例如:

HashMap<String, ArrayList<MyObject>> objectMap = new HashMap<String, ArrayList<>>();

//.... put many items to objectMap

Iterator it = objectMap.entrySet().iterator();

while(it.hasNext()){
  Map.Entry pairs = (Map.Entry) it.next();
  System.out.println(pairs.getKey() + " = " + pairs.getValue());
}

我认为这是因为它使用了一对<String, ArrayList>而不是<String, Integer>

1个回答

10
您可以使用 MaptoString() 方法:
String content = objectMap.toString();

Map 重写了 toString() 方法,因此您可以轻松获取映射的内容。

我应该举一个例子:

public static void main(String[] args) throws Exception {
    HashMap<String, List<MyObject>> objectMap = new HashMap<>();
    List<MyObject> list = new ArrayList<>();
    list.add(new MyObject(12, 12));
    objectMap.put("aaaa", list);
    String content = objectMap.toString();
    System.out.println("content = " + content);
}

private static class MyObject {
    int min;
    int max;

    public MyObject(int max, int min) {
        this.max = max;
        this.min = min;
    }

    @Override
    public String toString() {
        return "MyObject{" +
                "max=" + max +
                ", min=" + min +
                '}';
    }
}

并且这就是输出结果:

content = {aaaa=[MyObject{max=12, min=12}]}

所以这意味着它工作得很好


2
为什么不工作的原因是什么? - Bahramdun Adil
2
这就是原因:public final String toString() { return key + "=" + value; }。如果value是一个对象,它的toString()方法不会被调用。 - Prashant
我认为问题不同,我没有键值对 <Key, Integer> 而是 <Key, ArrayList> - CeZet
是的,它返回包的名称,而不是“HashMap”的内容。 - CeZet
1
不,这个问题不属于可序列化。 - Bahramdun Adil
显示剩余15条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接