我在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}}
}