java - ArrayList.clear() 正在更新 List<> 的先前值

标签 java android arraylist

我得到JSONArray来自服务器。 JSON我得到的格式如下。

[ {
   "area_name":"abc",
   "coordinates":[
     {
     "lat":1.123,
     "lng":2.123,
     },
     {
     "lat":1.123,
     "lng":2.123,
     },
     .
     .
     ]
},
{
.
.
.
}
] 

为了在 map 上绘制区域,我将区域添加到 areaList以及它们在coordinatesList中的对应坐标

ArrayList<HashMap<String, LatLng>> coordinatesList; // initialised in onCreate
List<ArrayList<HashMap<String, LatLng>>> areaList; // initialised in onCreate

for (int i = 0; i < areaArray.size(); i++) {
     coordinatesList.clear();
     //coordinatesList = new ArrayList<>();
     //  parsing of json and other non-related stuff

      for (int j =0; j < pointsArray.size(); j++) {
          // Getting data from json and saving to hashmap and adding to coordinatesList
          coordinatesList.add(pointsHashMap);
     }

     areaList.add(coordinatesList);
}

现在,如果我尝试从此 areaList 获取值在某个函数中。我对所有位置都得到相同的值。

log.d(TAG, "area " + areaList.get(i).get(0).get("lat_lng)); // its in a loop

对于 i 的任意值我通过 areaList.add(coordinatesList); 得到最后的附加值。 areaList 中之前添加的所有值已被替换。

但是当我评论coordinatesList.clear();时并取消注释 coordinatesList = new ArrayList<>();一切都按预期进行。

有人可以详细说明一下吗,为什么会发生这样的情况?

最佳答案

因为每次你在循环中不满足数组列表时,都会尝试在 onCreate(); 中不满足数组列表

coordinatesList = new ArrayList<>();

关于java - ArrayList.clear() 正在更新 List<> 的先前值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35595783/

相关文章:

Java随机数异常行为

Android Listview,处理可点击的 TextView

java - Espresso 测试输出超时

kotlin - 为什么该值没有进入列表?

java - Java中的菱形运算符是什么?

java - 如何解决错误 :Left side ($point) of '>=' operation has null value

java - Akka Java API artifactId 版本控制?

java - Canvas 绘制Paint循环代码

java - 我可以在 .removeif() 中使用 .size() 作为 ArrayList 的条件吗?

java - 使用tomcat在http请求之间确定优先级