當(dāng)我們需要去遍歷刪除集合刪除某幾個(gè)數(shù)據(jù)的時(shí)候很容易出現(xiàn)數(shù)組越界的錯(cuò)誤。
下面是自己常用的兩種方法。
錯(cuò)誤原因:當(dāng)我們刪除集合中的一個(gè)元素之后,下標(biāo)會(huì)發(fā)生改變,導(dǎo)致數(shù)組越界報(bào)錯(cuò)
//遍歷刪除數(shù)組坑
fun main() {
val a = mutableListOf("a", "b", "c", "d", "e") // 待遍歷的集合
val b = listOf("b", "d")// 用于查重集合
//從a中刪去b中的重復(fù)元素
//第一種方法:從后往前開始遍歷可以預(yù)防數(shù)組越界
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]
}