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]
}

你可能感兴趣的:(List遍历删除大坑)