从hashmap创建arraylist将替换上次接收的值中的所有值

时间:2014-11-22 13:48:49

标签: java android arraylist hashmap

我正在使用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

1 个答案:

答案 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
        }
    }
}