List遍历删除大坑

当我们需要去遍历删除集合删除某几个数据的时候很容易出现数组越界的错误。
下面是自己常用的两种方法。
错误原因:当我们删除集合中的一个元素之后,下标会发生改变,导致数组越界报错

//遍历删除数组坑
fun main() {

    val a = mutableListOf("a", "b", "c", "d", "e") // 待遍历的集合
    val b = listOf("b", "d")// 用于查重集合

    //从a中删去b中的重复元素
    //第一种方法:从后往前开始遍历可以预防数组越界
    for (i in a.size - 1 downTo 0) {
       if (b.contains(a[i]))
            a.removeAt(i)
    }
    println(a)
    //输出[a, c, e]


    ///第二种方法:迭代器
    val it = a.iterator()
    while (it.hasNext()) {
        if (b.contains(it.next())) {
            it.remove()
        }
    }
    println(a)
    //输出[a, c, e]
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、基础知识:1、JVM、JRE和JDK的区别:JVM(Java Virtual Machine):java虚拟机...
    杀小贼阅读 2,458评论 0 4
  • 概要 64学时 3.5学分 章节安排 电子商务网站概况 HTML5+CSS3 JavaScript Node 电子...
    阿啊阿吖丁阅读 9,431评论 0 3
  • 1.import static是Java 5增加的功能,就是将Import类中的静态方法,可以作为本类的静态方法来...
    XLsn0w阅读 1,285评论 0 2
  • 面向对象主要针对面向过程。 面向过程的基本单元是函数。 什么是对象:EVERYTHING IS OBJECT(万物...
    sinpi阅读 1,126评论 0 4
  • 这是我在简书的第一篇日记,我决定留给爱情。 我一直认为,人类最伟大的情感,是爱情。两个毫无血缘的人,相爱相伴,甚至...
    一根绳栓俩蚱蜢阅读 418评论 0 0