ArrayList遍歷刪除方式除錯

2021-10-24 08:44:59 字數 801 閱讀 6817

(錯誤的遍歷方式)

fori 正向遍歷方式是通過獲取arraylist的底層陣列通過下標進行遍歷。

這種方法進行遍歷刪除指定元素,雖然不會報錯,但是元素資料有誤。

list

list = collutil.

newarraylist(1

,2,3

,4,5

);@test

public

void

testlist()

system.out.

println

(list.

size()

);system.out.

println

(list.

tostring()

);}// 結果:

// size: 2

// tostring: [2, 4]

雖然在遍歷中刪除所有元素,但是最後結果卻有兩個值。檢視原始碼remove(int index)

public e get

(int index)

// remove刪除指定下標的元素

public e remove

(int index)

因此,通過下標正向遍歷,當刪除了指定下標的元素後,下標後的元素陣列向前移動乙個位置。通過區域性變數i對應的元素,雖然座標不變,但是座標對應的元素已經是後面乙個元素了,再進行 i++ 操作,就會跳過當前元素。導致遍歷刪除後的元素資料錯誤。

根據這個原因,可以通過fori的倒敘遍歷方式,進行正確的遍歷刪除

ArrayList的三種遍歷方式

作為list介面的具體實現類,arraylist可謂是萬物皆可存,相信大家在用arraylist的時候,遍歷有時也會是一件值得考慮的問題吧,有時候的遍歷要去考慮下標,有時候直接可以用foreatch無腦迴圈,今天在這裡介紹一下arraylist的三種遍歷方式。使用增強型for迴圈可以非常方便的遍歷a...

ArrayList邊遍歷自身邊刪除元素的方法

今天寫 時,需要刪除乙個列表中的某個元素,於是就用了乙個迴圈,一邊遍歷一邊刪除,乙個同事在review我的 時告訴我,不能這樣寫,會出問題。if list.get i icon name.equals shape8 於是,google了一下,原來這種遍歷有可能會遺漏某個元素,因為刪除元素後list的...

ArrayList刪除偶數

最近去面試,面試官一直問arraylist和linkedlist的區別,然後問如果給你乙個arraylist集合,然後刪除掉其中的偶數,你會怎麼做,我當時想了沒想就說首先遍歷集合,然後判斷當前元素是否 是偶數,若是則呼叫remove方法。後來回來查詢了一下,其實可以通過add方法來替換remove方...