Java集合中的Iterator迭代器接口詳解
Iterator接口
- 在程序開發(fā)中,經(jīng)常需要遍歷集合中的所有元素。針對(duì)這種需求,JDK專門提供了一個(gè)接口java.util.Iterator。
- Iterator接口也是Java集合中的一員,但它與Collection、Map接口有所不同。
- Collection接口與Map接口主要用于存儲(chǔ)元素
- Iterator,被稱為迭代器接口,本身并不提供存儲(chǔ)對(duì)象的能力,主要用于遍歷Collection中的元素
- Collection接口繼承了java.lang.Iterable接口,該接口有一個(gè)iterator()方法,那么所有實(shí)現(xiàn)了Collection接口的集合類都有一個(gè)iterator()方法,用以返回一個(gè)實(shí)現(xiàn)了Iterator接口的對(duì)象。
- public Iterator iterator(): 獲取集合對(duì)應(yīng)的迭代器,用來遍歷集合中的元素的。
- 集合對(duì)象每次調(diào)用iterator()方法都得到一個(gè)全新的迭代器對(duì)象,默認(rèn)游標(biāo)都在集合的第一個(gè)元素之前。
- Iterator接口的常用方法如下:
- public E next():返回迭代的下一個(gè)元素。
- public boolean hasNext():如果仍有元素可以迭代,則返回 true。
- 注意:在調(diào)用it.next()方法之前必須要調(diào)用it.hasNext()進(jìn)行檢測(cè)。若不調(diào)用,且下一條記錄無效,直接調(diào)用it.next()會(huì)拋出NoSuchElementException異常。
迭代器的執(zhí)行原理
Iterator迭代器對(duì)象在遍歷集合時(shí),內(nèi)部采用指針的方式來跟蹤集合中的元素,接下來通過一個(gè)圖例來演示Iterator對(duì)象迭代元素的過程:
增強(qiáng)for循環(huán)
- foreach循環(huán)(也稱增強(qiáng)for循環(huán))是 JDK5.0 中定義的一個(gè)高級(jí)for循環(huán),專門用來遍歷數(shù)組和集合的。
- foreach循環(huán)的語法格式:
for(元素的數(shù)據(jù)類型 局部變量 : Collection集合或數(shù)組){ //操作局部變量的輸出操作 } //這里局部變量就是一個(gè)臨時(shí)變量,自己命名就可以
舉個(gè)栗子:
package cn.edu.chd.exer4; import java.util.ArrayList; /** * ClassName:Main * Description: * 增強(qiáng)for循環(huán)的使用 * @Create 2023/11/19 10:46 */ public class Main { public static void main(String[] args) { //增強(qiáng)for循環(huán)的練習(xí) ArrayList<Integer> arrayList = new ArrayList<>(); //基本數(shù)據(jù)類型進(jìn)行裝箱 arrayList.add(5); arrayList.add(2); arrayList.add(0); arrayList.add(1); //使用增強(qiáng)for循環(huán)進(jìn)行遍歷 for (Integer i: arrayList) { System.out.println(i); } } }
對(duì)于集合的遍歷,增強(qiáng)for的內(nèi)部原理其實(shí)是個(gè)Iterator迭代器。如下圖。
它用于遍歷Collection和數(shù)組。通常只進(jìn)行遍歷元素,不要在遍歷的過程中對(duì)集合元素進(jìn)行增刪操作。
到此這篇關(guān)于Java集合中的Iterator迭代器接口詳解的文章就介紹到這了,更多相關(guān)Iterator迭代器接口內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 淺析Java迭代器Iterator和Iterable的區(qū)別
- Java中不得不知的Collection接口與Iterator迭代器
- Java中Iterator(迭代器)的用法詳解
- Java使用迭代器Iterator遍歷集合
- Java中Iterator迭代器的使用詳解
- Java集合框架迭代器Iterator實(shí)現(xiàn)原理解析
- Java如何使用Iterator迭代器刪除集合重復(fù)選項(xiàng)
- 如何實(shí)現(xiàn)java Iterator迭代器功能
- Java Iterator接口遍歷單列集合迭代器原理詳解
- Java使用Iterator迭代器遍歷集合數(shù)據(jù)的方法小結(jié)
- java集合中的迭代器Iterator和數(shù)組內(nèi)置方法及常見的報(bào)錯(cuò)解決方案
相關(guān)文章
SpringBoot+slf4j線程池全鏈路調(diào)用日志跟蹤問題及解決思路(二)
本文主要給大家介紹如何實(shí)現(xiàn)子線程中的traceId日志跟蹤,本文通過封裝Callable為例給大家介紹的非常詳細(xì),需要的朋友一起看看吧2021-05-05Spring整合Mybatis使用<context:property-placeholder>時(shí)的坑
這篇文章主要介紹了Spring整合Mybatis使用<context:property-placeholder>時(shí)的坑 的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-06-06java實(shí)現(xiàn)簡(jiǎn)單發(fā)送郵件功能
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)簡(jiǎn)單發(fā)送郵件功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-04-04在Spring Boot中使用Spark Streaming進(jìn)行實(shí)時(shí)數(shù)據(jù)處理和流式計(jì)算的步驟
這篇文章主要介紹了在Spring Boot中使用Spark Streaming進(jìn)行實(shí)時(shí)數(shù)據(jù)處理和流式計(jì)算,通過本文的介紹,我們了解了在Spring Boot中使用Spark Streaming進(jìn)行實(shí)時(shí)數(shù)據(jù)處理和流式計(jì)算的詳細(xì)步驟,需要的朋友可以參考下2024-03-03Java遠(yuǎn)程debug調(diào)試的操作步驟
日常項(xiàng)目中,通常我們的代碼都是部署到遠(yuǎn)程的服務(wù)器,有時(shí)線上出現(xiàn)了問題,經(jīng)常需要我們?cè)黾右恍┤罩緛砼挪閱栴},但是如果是測(cè)試環(huán)境的場(chǎng)景下或者我們能進(jìn)行遠(yuǎn)程調(diào)試的話,我們就可以使用遠(yuǎn)程的Debug方式進(jìn)行遠(yuǎn)程調(diào)試,下面給大家介紹一下Java遠(yuǎn)程debug調(diào)試的操作步驟2025-04-04SpringBoot中使用MQTT實(shí)現(xiàn)消息的訂閱和發(fā)布(示例代碼)
這篇文章主要介紹了SpringBoot中使用MQTT實(shí)現(xiàn)消息的訂閱和發(fā)布的相關(guān)知識(shí),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧2024-06-06rocketmq消費(fèi)負(fù)載均衡--push消費(fèi)詳解
這篇文章主要介紹了rocketmq消費(fèi)負(fù)載均衡--push消費(fèi)詳解,本文介紹了DefaultMQPushConsumerImpl消費(fèi)者,客戶端負(fù)載均衡相關(guān)知識(shí)點(diǎn)。,需要的朋友可以參考下2019-06-06