Java HashMap内容为String

Cod*_*erZ -1 java hashmap

请在下标之前阅读评论!

我想转换的内容HashMap,以String作为转换ArrayListString使用Arrays.toString(arrayList).

可能吗 ?有这么简单的方法吗?

我必须要迭代并使用它附加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());
}
Run Code Online (Sandbox Code Playgroud)

我认为它是不同的,因为对<String, ArrayList><String, Integer>

Bah*_*dil 6

您可以使用toString()Map:

String content = objectMap.toString();
Run Code Online (Sandbox Code Playgroud)

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 +
                '}';
    }
}
Run Code Online (Sandbox Code Playgroud)

它是输出:

content = {aaaa=[MyObject{max=12, min=12}]}
Run Code Online (Sandbox Code Playgroud)

所以这意味着它运作良好

  • 不工作的原因是什么? (2认同)
  • 这就是原因:`public final String toString(){return key +"="+ value; }`.如果value是一个对象,则不调用它的`toString()` (2认同)