• 技术文章 >Java >java教程

    java集合类arraylist循环中删除特定元素的方法

    高洛峰高洛峰2017-01-22 16:12:06原创729
    在项目开发中,我们可能往往需要动态的删除ArrayList中的一些元素。

    一种错误的方式:

    <pre name="code" class="java">for(int i = 0 , len= list.size();i<len;++i){
      
     if(list.get(i)==XXX){
      
        list.remove(i);
      
     }
      
    }

    上面这种方式会抛出如下异常:

    Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 3, Size: 3
      at java.util.ArrayList.RangeCheck(Unknown Source)
      at java.util.ArrayList.get(Unknown Source)
      at ListDemo.main(ListDemo.java:20)

    因为你删除了元素,但是未改变迭代的下标,这样当迭代到最后一个的时候就会抛异常咯。

    可以对上面的程序进行如下改进:

    for(int i = 0 , len= list.size();i<len;++i){
      
     if(list.get(i)==XXX){
      
        list.remove(i);
        --len;//减少一个
     }
      
    }

    上面的代码就正确了。

    下面我们再介绍一种方案:

    List接口内部实现了Iterator接口,提供开发者一个iterator()得到当前list对象的一个iterator对象。

    Iterator<String> sListIterator = list.iterator();
    while(sListIterator.hasNext()){
      String e = sListIterator.next();
      if(e.equals("3")){
      sListIterator.remove();
      }
    }

    上面这种也是正确的,并推荐使用第二种方案。

    两种方案实现原理都差多的,第二种只是jdk封装了下。

    查看ArrayList源码会发现很多方法内部都是基于iterator接口实现的,所以推荐使用第二种方案。

    以上就是小编为大家带来的java集合类arraylist循环中删除特定元素的方法全部内容了,希望大家多多支持PHP中文网~

    更多java集合类arraylist循环中删除特定元素的方法相关文章请关注PHP中文网!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:java 集合 arraylist
    上一篇:2种Java删除ArrayList中的重复元素的方法 下一篇:java中循环删除list中元素的方法总结

    相关文章推荐

    • 动态代理的两种方式是什么• JAVA-5NIO之Selector• J2ME程序开发全方位基础讲解汇总(一)• Java基础之类和对象、单例模式、继承• 打造高性能Java应用需掌握的5大知识

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网