我是靠谱客的博主 冷酷毛衣,这篇文章主要介绍如何正确的在一个循环中删除ArrayList中的元素。,现在分享给大家,希望可以做个参考。

为什么80%的码农都做不了架构师?>>>   hot3.png

  • 如果使用普通for循环直接删除会出现IndexOutOfBoundsException异常,非法索引。

    ArrayList<String> list = new ArrayList<String>();
    list.add("1");
    list.add("2");
    list.add("2");
    list.add("2");
    list.add("3");
    list.add("4");
    list.add("5");
    // 这样做肯定抛异常,非法访问数据越界
    int len = list.size();
    for (int i = 0; i < len; i++) {
    if("1".equals(list.get(i))){
    list.remove(i);
    }
    }
    //Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 4, Size: 4
    //改进后,删除元素后更新List长度,更新循环下标。但是这样的可读性很差。鬼知道你在写什么。。。
    int len = list.size();
    for (int i = 0; i < len; i++) {
    if("1".equals(list.get(i))){
    list.remove(i);
    --len;
    --i;
    }
    }
    //另外一种方式
    Iterator<String> sListIterator = list.iterator();
    while(sListIterator.hasNext()){
    String e = sListIterator.next();
    //注意了
    if(e.equals("1")){
    sListIterator.remove();
    }
    }
    
作者水平有限,下一章分析源码。而且这两种方式存在线程安全问题。。。

转载于:https://my.oschina.net/z201/blog/1239961

最后

以上就是冷酷毛衣最近收集整理的关于如何正确的在一个循环中删除ArrayList中的元素。的全部内容,更多相关如何正确内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(112)

评论列表共有 0 条评论

立即
投稿
返回
顶部