摘要:其實(shí),來(lái)源于包,也是屬于集合框架中的一份子,不同于存放單一數(shù)據(jù)和存放具有映射關(guān)系的數(shù)據(jù),主要用于集合元素的迭代輸出,所以它的對(duì)象又被稱(chēng)為迭代器。
????上一篇文章中我在集合元素的遍歷中已經(jīng)有涉及到Iterator的普遍使用方法,但是并沒(méi)有對(duì)此進(jìn)行解釋。
????其實(shí),Iterator來(lái)源于java.util包,也是屬于Java集合框架中的一份子,不同于Collection(存放單一數(shù)據(jù))和Map(存放具有映射關(guān)系的數(shù)據(jù)),Iterator主要用于集合元素的迭代輸出,所以它的對(duì)象又被稱(chēng)為迭代器。
????Iterator的方法包括:
表頭 | 表頭 |
---|---|
boolean hasNext(); | 判斷迭代器是否還有未遍歷的元素 |
E next(); | 返回迭代器中下一未遍歷元素 |
void remove(); | 移除迭代器上一遍歷的元素 |
void forEachRemaining(Consumer action) | 以特定的Lambda表達(dá)式遍歷元素 |
注:void forEachRemaining(Consumer action)為Java 8新增的默認(rèn)方法。
????下面是Iterator的實(shí)例化以及各方法的使用方法
Iterator的實(shí)例化
Iterator it=c5.iterator();
????Iterator本身不存在容納對(duì)象的能力,它的對(duì)象必須依附于Collection對(duì)象。
同時(shí),一個(gè)Iterator對(duì)象只能使用一次,復(fù)用會(huì)導(dǎo)致java.util.ConcurrentModificationException。我還沒(méi)搞懂為什么會(huì)這樣,應(yīng)該是關(guān)于設(shè)計(jì)模式的內(nèi)容。
boolean hasNext();以及next();
while(it.hasNext()) { System.out.println(it.next()); }
輸出:5
void remove();
while(it.hasNext()) { System.out.println(it.next()); it.remove(); }
輸出:5
????remove方法要在next方法之后調(diào)用,次序調(diào)換會(huì)導(dǎo)致java.lang.IllegalStateException。
void forEachRemaining(Consumer action);
Iterator it=c5.iterator(); it.forEachRemaining(obj->System.out.println(obj));
輸出:5
????通過(guò)特定的Lambda表達(dá)式格式輸出元素。
???? Iterator接口就寫(xiě)到這里了。通常我都是用它作為測(cè)試Collection對(duì)象的,好處就是不用通過(guò)循環(huán)遍歷,代碼量會(huì)少一點(diǎn)。但是正式使用我還是會(huì)使用循環(huán)遍歷Collection對(duì)象,雖則代碼量多,但是可以省掉一個(gè)對(duì)象的內(nèi)存空間,能省一點(diǎn)是一點(diǎn),哈哈!
????如果你還想了解關(guān)于java集合的內(nèi)容,歡迎點(diǎn)擊https://segmentfault.com/a/1190000019071471
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/74413.html
摘要:主要用于遍歷集合中的元素,對(duì)象也被稱(chēng)為迭代器。使用迭代過(guò)程中,不可修改集合元素迭代器采用快速失敗機(jī)制。一旦迭代過(guò)程中檢測(cè)到該集合已經(jīng)被修改,程序立即出發(fā)異常,而不是顯示修改后的結(jié)果,避免了共享資源而引發(fā)的潛在問(wèn)題。 集合類(lèi)和數(shù)組不一樣,數(shù)組元素既可以是基本類(lèi)型的值,也可以是對(duì)象(實(shí)際上保存的是對(duì)象的引用變量);而集合里只能保存對(duì)象(實(shí)際上只是保存對(duì)象的引用變量,但通常習(xí)慣上認(rèn)為集...
摘要:如果需要?jiǎng)?chuàng)建對(duì)象,則必須與一個(gè)被迭代的集合。這是一個(gè)有狀態(tài)的方法該方法用于保證對(duì)該流的后續(xù)訪(fǎng)問(wèn)中最大允許訪(fǎng)問(wèn)的元素個(gè)數(shù)??梢詫?duì)集合元素進(jìn)行整體的聚集操作。 Java集合分為Set(無(wú)序、不可重復(fù))、List(有序、重復(fù))、Queue(隊(duì)列)和Map(映射關(guān)系) Java集合概述 數(shù)組元素既可以是基本類(lèi)型的值,也可以是對(duì)象(實(shí)際保存對(duì)象的引用變量)集合只能保存對(duì)象(實(shí)際保存對(duì)象的引用變量...
摘要:對(duì)象稱(chēng)作迭代器,接口方法能以迭代方式逐個(gè)訪(fǎng)問(wèn)集合中各個(gè)元素,并可以從中除去適當(dāng)?shù)脑?。一相同點(diǎn)都是迭代器,當(dāng)需要對(duì)集合中元素進(jìn)行遍歷不需要干涉其遍歷過(guò)程時(shí),這兩種迭代器都可以使用。 Collection接口 首先,看一下Collection集合的基本結(jié)構(gòu):showImg(https://segmentfault.com/img/bVDYWR?w=743&h=380); 1.Collec...
摘要:集合框架的基本接口類(lèi)層次結(jié)構(gòu)其中表示接口,表示實(shí)現(xiàn)類(lèi)和在實(shí)際開(kāi)發(fā)中,需要將使用的對(duì)象存儲(chǔ)于特定數(shù)據(jù)結(jié)構(gòu)的容器中。實(shí)例是迭代器,擁有兩個(gè)方法方法迭代器用于遍歷集合元素。返回值則是轉(zhuǎn)換后的數(shù)組,該數(shù)組會(huì)保存集合中的所有元素。 Java Collections Framework是Java提供的對(duì)集合進(jìn)行定義,操作,和管理的包含一組接口,類(lèi)的體系結(jié)構(gòu)。 Java集合框架的基本接口/類(lèi)層次結(jié)構(gòu)...
摘要:集合的元素個(gè)數(shù)為輸出集合的元素個(gè)數(shù)為在本代碼中,新建一個(gè)局部變量保存的成員方法返回的值,輸出得到因?yàn)橹挥幸粋€(gè)元素。注若遍歷集合的同時(shí)改變集合,將引發(fā)異常。 ????在概述里面也說(shuō)過(guò):Collection是java集合兩大接口之一,旗下有三大子接口:Set(元素不能重復(fù),且無(wú)序)、Queue、List(元素可重復(fù),且有序)。????Collection來(lái)源于java.util包,主要方法...
閱讀 4093·2021-11-22 09:34
閱讀 1568·2021-11-04 16:10
閱讀 1795·2021-10-11 10:59
閱讀 3333·2019-08-30 15:44
閱讀 2104·2019-08-30 13:17
閱讀 3536·2019-08-30 11:05
閱讀 802·2019-08-29 14:02
閱讀 2672·2019-08-26 13:34