android异常 ConcurrentModificationException()

要进行的操作是,遍历map.判断key值是否存在。如果存在,,则this key对应的valuez增加一个list,否则的话,就重新再添加一组键值对,

private Map> modleLists() {
List lists = new ArrayList();
Map> maps = null;
for (int i = 0; i < carInfoLists.size(); i++) {
if (maps == null) {
maps = new HashMap>();
lists.add((carInfoLists.get(i)));
maps.put(carInfoLists.get(i).getModleName(), lists);
} else {
Iterator>> it = maps.entrySet().iterator();
while (it.hasNext()) {
Entry> next = it.next();
String key = next.getKey();
if (carInfoLists.get(i).getModleName().equals(key)) {
CarModle carModle = carInfoLists.get(i);
maps.get(key).add(carModle);
} else {
lists.clear();
lists.add(carInfoLists.get(i));
maps.put(carInfoLists.get(i).getModleName(), lists);
}

            }
0

5个回答

谢谢给位,自己已解决

0
 在遍历maps的时候,又操作maps.put了
lists.clear();
lists.add(carInfoLists.get(i));
maps.put(carInfoLists.get(i).getModleName(), lists);//在遍历内部在put是有问题的。
0
danielinbiti
danielinbiti 回复baidu_19694879: 看下面
3 年多之前 回复
baidu_19694879
baidu_19694879 怎么解决
3 年多之前 回复

遍历的时候不能动态加入的,,

0
baidu_19694879
baidu_19694879 怎么解决
3 年多之前 回复
 for (int i = 0; i < carInfoLists.size(); i++) {
    if (maps == null) {
                maps = new HashMap>();
        }
        if(maps.get(carInfoLists.get(i).getModleName())==null){
           maps.put(carInfoLists.get(i).getModleName(), new ArrayList());
        }
        List lists = (ArrayList)maps.get(carInfoLists.get(i).getModleName());
        lists.add(carInfoLists.get(i));
}
0
0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!