我在TreeMap中有一个TreeMap。

TreeMap <String, TreeMap<String, Double>> x_probs_org = new TreeMap<String, TreeMap<String, Double>>();

但是当我用完全相同的定义制作另一个,然后复制第一个时:
x_probs.putAll(x_probs_org);

我注意到新的树形图不会复制所有内容。它将正确复制所有String键,但仅复制值(TreeMap)中的最后一个元素。除了滚动浏览整个第一个树形图,然后将元素添加到新的树形图之外,还有没有更简单的方法来做到这一点?

首先,我需要具有相同数据的相同数据结构。我要做的是运行循环,在该循环中填充第一个树图,然后将下一个树图放入同一循环中。这也不起作用:
// build tempMap up there...
x_probs_org.put(tokens[0], tempMap);
x_probs.put(tokens[0], tempMap);

x_probs坚持缺少x_probs_org设法获取的数据。通过填充某些东西,“tempMap”是否会用尽?

最佳答案

这对我有用:

public static void main(String[] args) {
    Map <String, Map<String, Double>> map = new TreeMap<String, Map<String, Double>>();
    Map<String, Double> innerMap = new TreeMap<String, Double>();
    innerMap.put("a", 1.0);
    innerMap.put("b", 2.0);
    map.put("inner1", innerMap);
    innerMap = new TreeMap<String, Double>();
    innerMap.put("c", 3.0);
    innerMap.put("d", 4.0);
    map.put("inner2", innerMap);

    Map <String, Map<String, Double>> newMap = new TreeMap<String, Map<String, Double>>();
    newMap.putAll(map);

    System.out.println(map); // prints {inner1={a=1.0, b=2.0}, inner2={c=3.0, d=4.0}}
    System.out.println(newMap); // prints {inner1={a=1.0, b=2.0}, inner2={c=3.0, d=4.0}}
}

10-02 02:46