2 baidu 19694879 baidu_19694879 于 2016.03.23 15:54 提问

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);
}

            }

5个回答

baidu_19694879
baidu_19694879   2016.04.19 17:11
已采纳

谢谢给位,自己已解决

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

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

baidu_19694879
baidu_19694879 怎么解决
一年多之前 回复
danielinbiti
danielinbiti   Ds   Rxr 2016.03.23 16:59
 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));
}
lxk_1993
lxk_1993   Rxr 2016.03.23 18:25
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!