JAVA Iterator接口與增強(qiáng)for循環(huán)的實(shí)現(xiàn)
1 Iterator迭代器
1.1 Iterator接口
- java.util.Iterator接口也是Java集合中的一員;
- Iterator主要用于迭代訪問(wèn)(即遍歷)Collection中的元素,因此Iterator對(duì)象也被稱(chēng)為迭代器。
- public Iterator iterator(): 獲取集合對(duì)應(yīng)的迭代器,用來(lái)遍歷集合中的元素。
迭代:Collection集合元素的通用獲取方式。在取元素之前先判斷集合中有沒(méi)有元素。如果有,就把這個(gè)元素取出來(lái);繼續(xù)判斷,如果還有就再取出來(lái);就這樣一直把集合中的所有元素全部取出。
1.2 Iterator接口常用方法
- public boolean hasNext():如果下一個(gè)元素存在,返回 true,否則false;
- public E next():返回下一個(gè)元素。
1.3 案例演示
public class Demo { public static void main(String[] args) { // 使用多態(tài)方式創(chuàng)建對(duì)象 Collection<String> sg = new ArrayList<String>(); // 添加元素到集合 sg.add("劉備"); sg.add("關(guān)羽"); sg.add("張飛"); //使用迭代器進(jìn)行遍歷 Iterator<String> it = sg.iterator(); while(it.hasNext()){ String s = it.next(); System.out.println(s); } } }
劉備
關(guān)羽
張飛
tips::如果集合中已經(jīng)沒(méi)有元素了,還繼續(xù)使用迭代器的next方法,將會(huì)發(fā)生java.util.NoSuchElementException沒(méi)有集合元素的錯(cuò)誤。
1.2 迭代器的實(shí)現(xiàn)原理
Iterator迭代器對(duì)象在遍歷集合時(shí),內(nèi)部采用指針的方式來(lái)跟蹤集合中的元素。
在調(diào)用Iterator的next方法之前,迭代器的索引位于第一個(gè)元素之前,不指向任何元素,當(dāng)?shù)谝淮握{(diào)用迭代器的next方法后,迭代器的索引會(huì)向后移動(dòng)一位,指向第一個(gè)元素并將該元素返回,當(dāng)再次調(diào)用next方法時(shí),迭代器的索引會(huì)指向第二個(gè)元素并將該元素返回,依此類(lèi)推,直到hasNext方法返回false,表示到達(dá)了集合的末尾,終止對(duì)元素的遍歷。
2 增強(qiáng)for循環(huán)
增強(qiáng)for循環(huán)專(zhuān)門(mén)用來(lái)遍歷數(shù)組和Collection,它的內(nèi)部原理其實(shí)是個(gè)Iterator迭代器,所以在遍歷的過(guò)程中,不能對(duì)元素進(jìn)行增刪操作。
格式:
for(元素的數(shù)據(jù)類(lèi)型 變量 : Collection集合or數(shù)組){ //寫(xiě)操作代碼 }
示例1:遍歷數(shù)組
public class Demo { public static void main(String[] args) { int[] arr = {3,5,6,87}; //使用增強(qiáng)for遍歷數(shù)組 for(int a : arr){//a代表數(shù)組中的每個(gè)元素 System.out.println(a); } } }
3
5
6
87
示例2:遍歷集合
public class Demo { public static void main(String[] args) { Collection<String> sg = new ArrayList<String>(); sg.add("劉備"); sg.add("關(guān)羽"); sg.add("張飛"); //使用增強(qiáng)for遍歷 for(String s :sg){//接收變量s代表 代表被遍歷到的集合元素 System.out.println(s); } } }
劉備
關(guān)羽
張飛
到此這篇關(guān)于JAVA Iterator接口與增強(qiáng)for循環(huán)的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)JAVA Iterator接口與增強(qiáng)for循環(huán)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java以json格式向后臺(tái)服務(wù)器接口發(fā)送請(qǐng)求的實(shí)例
下面小編就為大家分享一篇java以json格式向后臺(tái)服務(wù)器接口發(fā)送請(qǐng)求的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-01-01Spring Boot 結(jié)合 aop 實(shí)現(xiàn)讀寫(xiě)分離
這篇文章主要介紹了Spring Boot 結(jié)合 aop 實(shí)現(xiàn)讀寫(xiě)分離的示例,幫助大家更好的理解和使用Spring Boot框架,感興趣的朋友可以了解下2020-11-11Java實(shí)現(xiàn)簡(jiǎn)單的抽牌游戲
這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)簡(jiǎn)單的抽牌游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-04-04Springboot FeignClient調(diào)用Method has too m
本文主要介紹了Springboot FeignClient微服務(wù)間調(diào)用Method has too many Body parameters 解決,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-12-12mybatis查詢(xún)語(yǔ)句揭秘之封裝數(shù)據(jù)
這篇文章主要給大家介紹了關(guān)于mybatis查詢(xún)語(yǔ)句揭秘之封裝數(shù)據(jù)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用mybatis具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04Java日期工具類(lèi)操作字符串Date和LocalDate互轉(zhuǎn)
這篇文章主要介紹了Java日期工具類(lèi)操作字符串Date和LocalDate互轉(zhuǎn),文章首先通過(guò)需要先引入坐標(biāo)展開(kāi)主題的相關(guān)內(nèi)容介紹,需要的朋友可以參一下2022-06-06Java使用Random類(lèi)生成隨機(jī)數(shù)示例
這篇文章主要介紹了Java使用Random類(lèi)生成隨機(jī)數(shù),結(jié)合實(shí)例形式分析了java基于Random類(lèi)生成隨機(jī)數(shù)與遍歷輸出相關(guān)操作技巧,需要的朋友可以參考下2019-07-07IP查詢(xún)系統(tǒng)的異步回調(diào)案例
本文主要分享了IP查詢(xún)系統(tǒng)的異步回調(diào)案例,具有很好的參考價(jià)值,下面跟著小編一起來(lái)看下吧2017-02-02Spring Boot實(shí)現(xiàn)STOMP協(xié)議的WebSocket的方法步驟
這篇文章主要介紹了Spring Boot實(shí)現(xiàn)STOMP協(xié)議的WebSocket的方法步驟,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-05-05