baidu_19694879
baidu_19694879
2016-03-23 07:54
采纳率: 50%
浏览 1.6k

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 09:11
    已采纳

    谢谢给位,自己已解决

    点赞 1 评论
  • danielinbiti
    danielinbiti 2016-03-23 08:08
     在遍历maps的时候,又操作maps.put了
    lists.clear();
    lists.add(carInfoLists.get(i));
    maps.put(carInfoLists.get(i).getModleName(), lists);//在遍历内部在put是有问题的。
    
    点赞 评论
  • Royal_lr
    Royal_lr 2016-03-23 08:15

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

    点赞 评论
  • danielinbiti
    danielinbiti 2016-03-23 08: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
    103style 2016-03-23 10:25
    点赞 评论

相关推荐