gpt4 book ai didi

java - 如何将 HashMap 添加到 ArrayList

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:53:19 25 4
gpt4 key购买 nike

有人能告诉我为什么下面的代码会用最近进入 ArrayList 的条目覆盖 ArrayList 中的每个元素吗?或者如何正确地将 hashmaps 的新元素添加到我的 ArrayList?

ArrayList<HashMap<String, String>> prodArrayList = new ArrayList<HashMap<String, String>>();

HashMap<String, String> prodHashMap = new HashMap<String, String>();

public void addProd(View ap)
{
// test arraylist of hashmaps
prodHashMap.put("prod", tvProd.getText().toString());

prodArrayList.add(prodHashMap);

tvProd.setText("");

// check data ///

Log.e("myLog","Data prodArrayList in ADD Method Size = "+prodArrayList.size());

for(int i=0; i< prodArrayList.size();i++)
{
Log.e("myLog","Data prodArrayList in ADD Method = "+prodArrayList.get(i).toString());
}
}

最佳答案

问题:

prodHashMap.put("prod", tvProd.getText().toString());

每次将元素添加到数组列表时,您都在使用相同的键并引用相同的 HashMap。从而改变它的值(value)。

解决方案:

创建 HashMap 的新实例每次你想把它添加到 ArrayList以避免在调用 addProd 时更改其值

public void addProd(View ap)
{
// test arraylist of hashmaps
HashMap<String, String> prodHashMap = new HashMap<String, String>();
prodHashMap.put("prod", tvProd.getText().toString());

prodArrayList.add(prodHashMap);

tvProd.setText("");

// check data ///

Log.e("myLog","Data prodArrayList in ADD Method Size = "+prodArrayList.size());

for(int i=0; i< prodArrayList.size();i++)
{
Log.e("myLog","Data prodArrayList in ADD Method = "+prodArrayList.get(i).toString());
}
}

关于java - 如何将 HashMap 添加到 ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25293128/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com