我們?cè)诒闅v可變數(shù)組時(shí),最好不要做刪除數(shù)組中元素的操作。
因?yàn)閯h除操作可能會(huì)引起數(shù)組容量的變化,導(dǎo)致數(shù)組越界等問(wèn)題。
以前在使用for循環(huán)遍歷的時(shí)候遇到過(guò)這個(gè)問(wèn)題。
此處舉例列表存儲(chǔ)對(duì)象的列表A為mListA;和存儲(chǔ)A對(duì)象的列表B為mListB,目標(biāo)是把B中重復(fù)的A去掉
解決方案如下:
Kotlin:關(guān)鍵方法使用數(shù)組的indexOfFirst方法,如果l mListB.indexOfFirst { A.id == B.id }返回-1說(shuō)明沒(méi)有找到重復(fù)的元素,如果不是-1則返回?cái)?shù)組中所在的元素下標(biāo)
mListA?.forEachIndexed { index, A ->
var currentIndexListB =
mListB.indexOfFirst { it.id == A.id }
//-1表示沒(méi)發(fā)現(xiàn)重復(fù)的 其它值表明已經(jīng)發(fā)現(xiàn)重復(fù)的值并返回當(dāng)下列表的坐標(biāo)
if (currentIndexListB != -1) {
mListB.removeAt(currentIndexListB)
}
}