迭代器的代码实现
package com.learn.demo02.Iterator;import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;/*java.util.Iterator接口:迭代器(對集合進(jìn)行遍歷)有兩個(gè)常用的方法boolean hasNext() 如果仍有元素可以迭代,則返回 true。判斷集合中還有沒有下一個(gè)元素,有就返回true,沒有就返回falseE next() 返回迭代的下一個(gè)元素。取出集合中的下一個(gè)元素Iterator迭代器,是一個(gè)接口,我們無法直接使用,需要使用Iterator接口的實(shí)現(xiàn)類對象,獲取實(shí)現(xiàn)類的方式比較特殊Collection接口中有一個(gè)方法,叫iterator(),這個(gè)方法返回的就是迭代器的實(shí)現(xiàn)類對象Iterator<E> iterator() 返回在此 collection 的元素上進(jìn)行迭代的迭代器。迭代器的使用步驟(重點(diǎn)):1.使用集合中的方法iterator()獲取迭代器的實(shí)現(xiàn)類對象,使用Iterator接口接收(多態(tài))2.使用Iterator接口中的方法hasNext判斷還有沒有下一個(gè)元素3.使用Iterator接口中的方法next取出集合中的下一個(gè)元素*/
public class Demo01Iterator {public static void main(String[] args) {//創(chuàng)建一個(gè)集合對象Collection<String> coll = new ArrayList<>();//往集合中添加元素coll.add("姚明");coll.add("科比");coll.add("麥迪");coll.add("詹姆斯");coll.add("艾弗森");/*1.使用集合中的方法iterator()獲取迭代器的實(shí)現(xiàn)類對象,使用Iterator接口接收(多態(tài))注意:Iterator<E>接口也是有泛型的,迭代器的泛型跟著集合走,集合是什么泛型,迭代器就是什么泛型*///多態(tài) 接口 實(shí)現(xiàn)類對象Iterator<String> it = coll.iterator();/*發(fā)現(xiàn)使用迭代器取出集合中元素的代碼,是一個(gè)重復(fù)的過程所以我們可以使用循環(huán)優(yōu)化不知道集合中有多少元素,使用while循環(huán)循環(huán)結(jié)束的條件,hasNext方法返回false*/while(it.hasNext()){String e = it.next();System.out.println(e);}System.out.println("----------------------");for(Iterator<String> it2 = coll.iterator();it2.hasNext();){String e = it2.next();System.out.println(e);}/* //2.使用Iterator接口中的方法hasNext判斷還有沒有下一個(gè)元素boolean b = it.hasNext();System.out.println(b);//true//3.使用Iterator接口中的方法next取出集合中的下一個(gè)元素String s = it.next();System.out.println(s);//姚明b = it.hasNext();System.out.println(b);s = it.next();System.out.println(s);b = it.hasNext();System.out.println(b);s = it.next();System.out.println(s);b = it.hasNext();System.out.println(b);s = it.next();System.out.println(s);b = it.hasNext();System.out.println(b);s = it.next();System.out.println(s);b = it.hasNext();System.out.println(b);//沒有元素,返回falses = it.next();//沒有元素,在取出元素會拋出NoSuchElementException沒有元素異常System.out.println(s);*/}
}
tips::在進(jìn)行集合元素取出時(shí),如果集合中已經(jīng)沒有元素了,還繼續(xù)使用迭代器的next方法,將會發(fā)生java.util.NoSuchElementException沒有集合元素的錯(cuò)誤。
超強(qiáng)干貨來襲 云風(fēng)專訪:近40年碼齡,通宵達(dá)旦的技術(shù)人生總結(jié)
- 上一篇: Iterator接口介绍
- 下一篇: 迭代器的实现原理