古詩詞大全網 - 古詩大全 - 集合常用的3種遍歷方式

集合常用的3種遍歷方式

1 叠代器 Iterator

運行結果

說明上面例子中for和while不能使用同壹個iterator對象,因為在while循環中iterator已經返回最後壹個元素,指針指向的下壹個元素為空了,即hasNext()返回值為false,不能用該叠代器的hasNext()作為for循環的判斷條件。

2 轉換為Object[]進行遍歷

運行結果

3 使用增強for(foreach)實現遍歷

運行結果

`註意·

增強for有個缺點,如果集合或者數組為null,會報空指針異常(NullPointerException),在調用增強for時最好先做判斷。通過反編譯可以看到增強for是用iterator的for循環實現的,是iterator的替代,iterator也有這種空指針異常的問題。

4說明

運行結果,集合元素內容不變

*4.2 並行修改異常ConcurrentModificationException

4.2.1 叠代器和foreach(增強for)遍歷的循環中,不能出現集合對象本身調用方法更改集合內容,否則運行會報錯 java.util.ConcurrentModificationException(並修改異常)

原因是--叠代器和foreach都是依賴集合而存在的,如果集合更改了,叠代器和增強for都不知道,所以就報並行修改異常。

運行結果

4.2.2 解決辦法

A 使用普通for循環,在循環中根據判斷集合對內容進行修改

B 使用叠代器對集合內容進行修改,Iterator接口中沒有該方法,它的子類ListIterator接口中提供add()

詳情請參考: /p/94b12cceb6c7 中(二、3.3)

4.3 壹個集合對象的叠代器循環中多次使用next(),會出現java.util.NoSuchElementException異常。

運行結果

4.4 叠代器的remove()能刪除next()返回的元素,這也算是更改了集合的內容,不能用元素的值在進行叠代進行解釋,遺留

運行結果