我們知道迭代器(Iterator)是一種對象,它能夠用來遍歷標準模板庫容器中的部分或全部元素。那么Iterator迭代器的設計原理是什么呢?迭代器問什么定義了一個借口,而不是一個類呢?
我們假設迭代器迭代數據的功能定義為了一個類,那么,會有這樣的問題。不同的集合,由于數據結構不一樣,所以他們的存儲方式也是不一樣的。也就是說,迭代器獲取的時候,獲取的方式是變化的,也就是不固定的。所以把這種方式定義為具體的實現是不合理的。
無論何種集合,他們肯定都有獲取的功能,而且不知道什么時候就沒有數據了。所有他們也會有判斷功能。于是,就把判斷和獲取功能抽取出來,定義在接口中。這樣的話,將來無論是哪種集合在遍歷的時候,它們自己只要去實現迭代器接口即可。
那具體怎么實現的呢?集合迭代器是以內部類的方式實現的。簡單看一段代碼。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
package me.socketthread; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; public class IteratorDemo { public static void main(String[] args) { //創建對象 Collection c = new ArrayList(); //添加元素 c.add( "hello" ); c.add( "world" ); c.add( "helloworld" ); //遍歷集合對象,通過集合對象調用方法c.iterator()得到迭代器對象Iterator Iterator it = c.iterator(); //返回的是Iterator的子類對象,多態。 while (it.hasNext()) { //檢查序列中是否還有元素 //System.out.println(it.next()); String s =(String)it.next(); //獲得序列中的下一個元素 System.out.println(s); } } } |
輸出
1
2
3
|
hello world helloworld |
總結
以上就是本文關于Java編程Iterator迭代器設計原理及實現代碼示例的全部內容,希望對大家有所幫助。有什么問題,可以留言,歡迎大家交流討論。感謝朋友們對服務器之家網站的支持!
原文鏈接:http://blog.csdn.net/kdc18333608478/article/details/50663722