javaSE集合框架的迭代操作

集合的迭代操作 :
把集合中的元素一個(gè)一個(gè)遍歷取出來
迭代器對(duì)象 :
Iterator : 迭代器對(duì)象,只能從上往下迭代.
boolean hasNext() : 判斷當(dāng)前指針后是否有下一個(gè)元素.
object next() : 獲取指針的下一個(gè)元素并且移動(dòng)指針.
ListIterator : 是Iterator接口的子接口,支持雙向迭代.
Enumeration : 古老的迭代器(適用于古老的Vector類).
迭代
  • 方式一 : for循環(huán)
    for循環(huán)
  • 方式二 : for each增強(qiáng)for循環(huán)
    for each增強(qiáng)
  • 方式三 : 用while循環(huán)操作迭代器Iterator
    while+迭代器
  • 方式四(實(shí)用) : 用while循環(huán)操作迭代器
    for+迭代器

深入分析for-each和迭代器 :

1. for-each可以操作數(shù)組 : 底層依然采用for循環(huán)+索引來獲取數(shù)組元素.
2. for-each可以操作Iterable實(shí)例:底層采用的是Iterator(迭代器).

所以,直接用for-each來迭代數(shù)組和集合元素即可,簡單.
for-each的語法格式:

for(類型 變量 : 數(shù)組名/Iterable實(shí)例){
//TODO
}
for-each操作數(shù)組

for-each操作集合

注意有例外↓

當(dāng)需要變迭代集合元素,邊刪除指定元素時(shí),使用for-each會(huì)發(fā)生異常.只能使用迭代器對(duì)象的remove方法..

編譯后會(huì)出現(xiàn)如下異常:
并發(fā)修改異常

如何解決異常?

不要使用結(jié)合對(duì)象的刪除方法(boolean remove(Object ele)).
要使用Iterator中的remove方法.
該方法會(huì)從兩個(gè)線程中同時(shí)移除此元素,保證了兩個(gè)線程的同步.
此時(shí)只能使用迭代器對(duì)象調(diào)用
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Lua 5.1 參考手冊(cè) by Roberto Ierusalimschy, Luiz Henrique de F...
    蘇黎九歌閱讀 14,257評(píng)論 0 38
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,628評(píng)論 19 139
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,740評(píng)論 18 399
  • 當(dāng)你有了一個(gè)夢想 不需要繞全世界告訴別人求相信求鼓勵(lì) 多半連你父母都不會(huì)信你 別怪他們 那是因?yàn)閺男〉酱竽懔⑦^...
    卐筆言閱讀 454評(píng)論 0 0
  • 如果說人生的相遇都是已經(jīng)確定,我想我和花子的緣分是前世難忘的情分。 花子是一條狗,我不知道怎么介紹,或許就...
    嘉懿丶Best閱讀 281評(píng)論 0 2

友情鏈接更多精彩內(nèi)容