gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 07:21:33 25 4
gpt4 key购买 nike

我得到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/

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