我在 TreeMap 中有一个 TreeMap。
TreeMap <String, TreeMap<String, Double>> x_probs_org = new TreeMap<String, TreeMap<String, Double>>();
但是当我用完全相同的定义制作另一个,然后复制第一个时:
x_probs.putAll(x_probs_org);
我注意到新的树状图不会复制所有内容。它正确复制所有字符串键,但仅复制值中的最后一个元素 (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}}
}
关于java - 使用 putAll() 复制树状图的 Java 树状图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9820208/