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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java:Lterator迭代器

發(fā)布時間:2024/3/12 java 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java:Lterator迭代器 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

目錄

    • Iterator接口 java.util.Iterator
    • 迭代器的實現(xiàn)原理
    • for each (內(nèi)置迭代器)

Iterator接口 java.util.Iterator

在程序開發(fā)中,經(jīng)常需要遍歷集合中的所有元素。Iterator接口也是Java集合中的一員,但它與Collection、Map接口有所不同,Collection接口與Map接口主要用于存儲元素,而Iterator主要用于迭代訪問(即遍歷)Collection中的元素,因此Iterator對象也被稱為迭代器。

迭代:即Collection集合元素的通用獲取方式。在取元素之前先要判斷集合中有沒有元素,如果有,就把這個元素取出來,繼續(xù)在判斷,如果還有就再取出出來。一直把集合中的所有元素全部取出。這種取出方式專業(yè)術(shù)語稱為迭代。

想要遍歷Collection集合,那么就要獲取該集合迭代器完成迭代操作,下面介紹一下獲取迭代器的方法:

  • public Iterator iterator(): 獲取集合對應(yīng)的迭代器,用來遍歷集合中的元素的。

Iterator接口的常用方法如下:

  • public E next():返回迭代的下一個元素。
  • public boolean hasNext():如果仍有元素可以迭代,則返回 true。

e.g.:

public class IteratorDemo {public static void main(String[] args) {// 使用多態(tài)方式 創(chuàng)建對象Collection<String> coll = new ArrayList<String>();// 添加元素到集合coll.add("Michael");coll.add("Jack");coll.add("kite");//遍歷//使用迭代器 遍歷 每個集合對象都有自己的迭代器Iterator<String> it = coll.iterator();// 泛型指的是 迭代出 元素的數(shù)據(jù)類型while(it.hasNext()){ //判斷是否有迭代元素String s = it.next();//獲取迭代出的元素System.out.println(s);}} }

Tips:在進行集合元素取出時,如果集合中已經(jīng)沒有元素了,還繼續(xù)使用迭代器的next方法,將會發(fā)生java.util.NoSuchElementException沒有集合元素的錯誤。

迭代器的實現(xiàn)原理

我們在之前案例已經(jīng)完成了Iterator遍歷集合的整個過程。當遍歷集合時,首先通過調(diào)用t集合的iterator()方法獲得迭代器對象,然后使用hashNext()方法判斷集合中是否存在下一個元素,如果存在,則調(diào)用next()方法將元素取出,否則說明已到達了集合末尾,停止遍歷元素。

Iterator迭代器對象在遍歷集合時,內(nèi)部采用指針的方式來跟蹤集合中的元素。
在調(diào)用Iterator的next方法之前,迭代器的索引位于第一個元素之前,不指向任何元素,當?shù)谝淮握{(diào)用迭代器的next方法后,迭代器的索引會向后移動一位,指向第一個元素并將該元素返回,當再次調(diào)用next方法時,迭代器的索引會指向第二個元素并將該元素返回,依此類推,直到hasNext方法返回false,表示到達了集合的末尾,終止對元素的遍歷。

for each (內(nèi)置迭代器)

增強for循環(huán)(也稱for each循環(huán))是JDK1.5以后出來的一個高級for循環(huán),專門用來遍歷數(shù)組和集合的。它的內(nèi)部原理其實是個Iterator迭代器,所以在遍歷的過程中,不能對集合中的元素進行增刪操作。

格式:

for(元素的數(shù)據(jù)類型 變量 : Collection集合or數(shù)組){ //寫操作代碼 }

它用于遍歷Collection和數(shù)組。通常只進行遍歷元素,不要在遍歷的過程中對集合元素進行增刪操作。

e.g.:

public class NBForDemo1 {public static void main(String[] args) {int[] arr = {3,5,6,87};//使用增強for遍歷數(shù)組for(int a : arr){//a代表數(shù)組中的每個元素System.out.println(a);}} }

e.g.:

public class NBFor {public static void main(String[] args) { Collection<String> coll = new ArrayList<String>();coll.add("Mick");coll.add("Jack");coll.add("Kite");//使用增強for遍歷for(String s :coll){//接收變量s代表 代表被遍歷到的集合元素System.out.println(s);}} }

Tips: 新for循環(huán)必須有被遍歷的目標。目標只能是Collection或者是數(shù)組。新式for僅僅作為遍歷操作出現(xiàn)。

總結(jié)

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

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