集合foreach循环几点注意

来源:互联网 发布:剑灵天族捏脸数据免费 编辑:程序博客网 时间:2024/06/10 08:48
 public static void main (String [] args ) {    Map<String, Object> maps1 = new HashMap<>();    maps1.put("1","2");    Map<String, Object> maps2 = new HashMap<>();    maps2.put("2","3");    Map<String, Object> maps3 = new HashMap<>();    maps3.put("3","4");    List<Map<String, Object>> list = new ArrayList<>();    list.add(maps1);    list.add(maps2);    list.add(maps3);    for (Map<String, Object> map : list) {      if (map.get("1").equals("2")) {        Map<String, Object> newmaps = new HashMap<>();        newmaps.put("1","2");        list.add(newmaps);      }    }    for (int i=0; i<list.size();i++) {      System.out.println(list.get(i));      Map<String, Object> map = list.get(i);      if (map.get("1").equals("2")) {        Map<String, Object> newmaps = new HashMap<>();        newmaps.put("1","2");        list.add(newmaps);      }    }  }

1.尽量不要在foreach中进行remove,add操作,如果需要进行remove操作请使用迭代器。

    Map<String, Object> maps1 = new HashMap<>();    maps1.put("1", "2");    Map<String, Object> maps2 = new HashMap<>();    maps2.put("2", "3");    Map<String, Object> maps3 = new HashMap<>();    maps3.put("3", "4");    List<Map<String, Object>> list = new ArrayList<>();    list.add(maps1);    list.add(maps2);    list.add(maps3);    Iterator<Map<String, Object>> it = list.iterator();    while (it.hasNext()) {      synchronized (it){        Map<String, Object> map = it.next();        System.out.println(map);        it.remove();      }    }