我们在遍历可变数组时,最好不要做删除数组中元素的操作。
因为删除操作可能会引起数组容量的变化,导致数组越界等问题。
以前在使用for循环遍历的时候遇到过这个问题。
此处举例列表存储对象的列表A为mListA;和存储A对象的列表B为mListB,目标是把B中重复的A去掉
解决方案如下:
Kotlin:关键方法使用数组的indexOfFirst方法,如果l mListB.indexOfFirst { A.id == B.id }返回-1说明没有找到重复的元素,如果不是-1则返回数组中所在的元素下标
mListA?.forEachIndexed { index, A ->
var currentIndexListB =
mListB.indexOfFirst { it.id == A.id }
//-1表示没发现重复的 其它值表明已经发现重复的值并返回当下列表的坐标
if (currentIndexListB != -1) {
mListB.removeAt(currentIndexListB)
}
}
网友评论