日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Iterator迭代器接口讲解

發(fā)布時間:2025/3/15 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Iterator迭代器接口讲解 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Iterator迭代器接口

使用Iterator接口遍歷集合元素

1 Iterator對象稱為迭代器(設(shè)計模式的一種),主要用于遍歷 Collection 集合中的元素。
2 GOF給迭代器模式的定義為:提供一種方法訪問一個容器(container)對象中各個元
素,而又不需暴露該對象的內(nèi)部細(xì)節(jié)。迭代器模式,就是為容器而生。類似于“公
交車上的售票員”、“火車上的乘務(wù)員”、“空姐”。
3 Collection接口繼承了java.lang.Iterable接口,該接口有一個iterator()方法,那么所
有實(shí)現(xiàn)了Collection接口的集合類都有一個iterator()方法,用以返回一個實(shí)現(xiàn)了
Iterator接口的對象。
4 Iterator 僅用于遍歷集合,Iterator 本身并不提供承裝對象的能力。如果需要創(chuàng)建
Iterator 對象,則必須有一個被迭代的集合。
5 集合對象每次調(diào)用iterator()方法都得到一個全新的迭代器對象,默認(rèn)游標(biāo)都在集合
的第一個元素之前。

iterator接口的方法


在調(diào)用it.next()方法之前必須要調(diào)用it.hasNext()進(jìn)行檢測。若不調(diào)用,且下一條記錄無效,直接調(diào)用it.next()會拋出NoSuchElemenException異常

迭代器執(zhí)行原理

iterator接口remove()方法

1 Iterator可以刪除集合的元素,但是是遍歷過程中通過迭代器對象的remove方 法,不是集合對象的remove方法。
2 如果還未調(diào)用next()或在上一次調(diào)用 next 方法之后已經(jīng)調(diào)用了 remove 方法,再調(diào)用remove都會報IllegalStateException。

package BaiYSTest1;import java.util.ArrayList; import java.util.Collection; import java.util.Date; import java.util.Iterator;/** Iterator迭代器使用:集合元素的遍歷操作,使用迭代器Iterator接口* 1.內(nèi)部的方法:hasNext()和 next();* 2.集合對象每次調(diào)用iterator()方法都得到一個全新的迭代器對象* 默認(rèn)游標(biāo)都在集合的第一個元素之前。* 3,內(nèi)部定義了remove(),可以在遍歷的時候,刪除集合中的元素,此方法不同于集合直接調(diào)用remove()*/ public class CollectionTest2 {public static void main(String[] args) {Collection coll = new ArrayList();coll.add(123);coll.add(new Date());coll.add("heipapap");coll.add("baibai");coll.add(false);coll.add(new Person("Tom",23));coll.add(new Person("maruya",23));Iterator it = coll.iterator();//方式一 :不推薦使用for(int i =0;i<coll.size();i++){System.out.println(it.next());}//方式二:推薦使用//hasNext():判斷是否還有下一個元素while(it.hasNext()){//next(): 1指針下移;2將下移以后集合位置上的元素返回System.out.println(it.next());}//經(jīng)常犯錯誤的兩種寫法一Iterator it1 = coll.iterator();while((it1.next())!=null){System.out.println(it1.next());}//經(jīng)常犯錯誤的兩種寫法二while(coll.iterator().hasNext()){System.out.println(coll.iterator().next());}//刪除集合中的元素Iterator it2 = coll.iterator();while(it2.hasNext()){Object obj = it2.next();if("baibai".equals(obj)){it2.remove();}} } } 新人創(chuàng)作打卡挑戰(zhàn)賽發(fā)博客就能抽獎!定制產(chǎn)品紅包拿不停!

總結(jié)

以上是生活随笔為你收集整理的Iterator迭代器接口讲解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。