我正在使用arraylist创建新的hashmap。当新数据出现时,我不知道它为什么用新的数据替换所有以前的值。
这是我正在做的事情但是当我在新创建的xdata的arraylist中看到时,值是相同的
xdata = new HashMap<String, ArrayList<Integer>>();
xalldata = new HashMap<String, ArrayList<propertyData>>();
xalldata.put("X1", allX1);
xalldata.put("X2", allX2);
xalldata.put("X3", allX3);
for (String x: xCordinates) {
if (xAxis.get(x).size() > 0) {
if (xalldata.get(x) == null) {
t_tmp = new ArrayList<Integer>();
t_tmp.add(xalldata.get(x).get(0).x_max);
xdata.put(x, t_tmp);
} else {
xdata.get(x).add(xalldata.get(x).get(0).x_max);
}
}
}
预期输出
key: x1
Arraylist Data[34, 67, 98, 90]
key: x2
Arraylist Data[78, 7, 633, 346]
来自代码的电流是
key: x1
Arraylist Data[90, 90, 90, 90]
键:x1 Arraylist数据[34,34,34,34] //如果34是新值,它也会替换所有旧值。 从xalldata中提取x_max并创建新的arraylist的想法,我可以用新的值更新..来的时候
最后,xdata中的所有arraylist仅保留最后的值,并用新的值替换所有值。 Thansl
答案 0 :(得分:0)
根据你的评论,我假设你想把xalldata中找到的值(对于密钥x)放在新地图中:
for (String x: xCordinates) {
if (xAxis.get(x).size() > 0) {
if (xalldata.get(x) == null) {
t_tmp = new ArrayList<Integer>();
t_tmp.add(xAxis.get(x).get(0).x_max); // was xalldata
xdata.put(x, t_tmp);
} else {
xdata.put(xalldata.get(x)); // add the value from the old map to the
// new map
xdata.get(x).add(xAxis.get(x).get(0).x_max); // was xalldata
}
}
}