• java中List遍历删除元素-----不能直接 list.remove()


    https://blog.csdn.net/github_2011/article/details/54927531

    这是List接口中的方法,List集合调用此方法可以得到一个迭代器对象(Iterator)。

    for example:

    [java] view plain copy
     
    1. //准备数据  
    2.         List<Student> list = new ArrayList<>();  
    3.         list.add(new Student("male"));  
    4.         list.add(new Student("female"));  
    5.         list.add(new Student("female"));  
    6.         list.add(new Student("male"));  
    7.   
    8.         //遍历删除,除去男生  
    9.         Iterator<Student> iterator = list.iterator();  
    10.         while (iterator.hasNext()) {  
    11.             Student student = iterator.next();  
    12.             if ("male".equals(student.getGender())) {  
    13.                 iterator.remove();//使用迭代器的删除方法删除  
    14.             }  
    15.         }  

    这种使用迭代器遍历、并且使用迭代器的删除方法(remove()) 删除是正确可行的,也是开发中推荐使用的。

    误区:

    如果将上例中的iterator.remove(); 改为list.remove(student);将会报ConcurrentModificationException异常。

    这是因为:使用迭代器遍历,却使用集合的方法删除元素的结果。

    https://blog.csdn.net/github_2011/article/details/54927531

  • 相关阅读:
    flowable的多人会签和一票否决
    排序
    Java数组的三种打印方式
    CF446B DZY Loves Modification(优先队列)
    2019CCPC哈尔滨 Interesting Permutation(思维)
    2019沈阳网络赛 Fish eating fruit (换根dp)
    AcWing287 积蓄程度(换根dp)
    CF1358E Are You Fired?(前缀和+贪心)
    android android studio error
    cocos2D-X 打包
  • 原文地址:https://www.cnblogs.com/czlovezmt/p/9154604.html
Copyright © 2020-2023  润新知