java - 列表正在用最新值替换所有旧值

标签 java android arraylist hashmap

我遇到了一个奇怪的问题,我没有找到任何解释,我将在代码中注释如下:

     final List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();

        Map<String,Object> map = new HashMap<String,Object>();
//for example payss ArrayList contains `A,B,C,D,E,F,G`
        for (int i=0;i<payss.size();i++){

        Bitmap contact_pic=pays_drapeaux.get(i);   
        drawable=new BitmapDrawable(contact_pic); 
        map.put("pays", payss.get(i).getNom());
        Log.i("PAYS",payss.get(i).getNom()); //here it shows correctly the values one by one
        map.put("drapeau",drawable);

        list.add(map);

       }
  //here want to show what the list contains after setting it above
    for (int i=0;i<list.size();i++){
    Log.i("VALUES",list.get(i).values().toString()); //but here it shows G,G,G,G,G,G,G
        }

如您所见,我在末尾有一个 list 变量,其所有值都是最近的 payss 值 (G)。知道为什么我会遇到这个问题吗? 感谢您的帮助。

最佳答案

您仅使用一个 Map 对象并将其多次添加到列表中。在第一个循环中,条目总是被覆盖(因为只有一个映射)。很明显,只有最后的值才能生存。

关于java - 列表正在用最新值替换所有旧值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14081240/

相关文章:

java - JBoss 7 类加载奇迹

java - GWT 中的服务器端配置常量

java.lang.InstantiationException,实例化RecyclerView.ViewHolder

android - 在 ActionBar 上显示 SearchView 的软键盘

android - 拒绝对特定库/模块的权限

java - 钻石算子ArrayList

android - 使用 rxjava2 遍历列表

java - ArrayList 初始容量和 IndexOutOfBoundsException

java - 无法获取 getResponseCode

java - 在数据库中读取/写入 POJO 作为 JSON 字符串