(錯誤的遍歷方式)
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方...