我是靠谱客的博主 冷酷毛衣,最近开发中收集的这篇文章主要介绍如何正确的在一个循环中删除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中的元素。的全部内容,希望文章能够帮你解决如何正确的在一个循环中删除ArrayList中的元素。所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部