文章出處
迭代器模式提供一種方法順序訪問一個聚合對象中的各種元素,而又不暴露該對象的內部表示。提供一種方法順序訪問一個聚合對象中的各種元素,而又不暴露該對象的內部表示。訪問一個聚合對象的內容而無需暴露它的內部表示
支持對聚合對象的多種遍歷,為遍歷不同的聚合結構提供一個統一的接口。
迭代器模式可以直接使用原生JDK中提供的方法:java.util.Iterator;,如:
import java.util.ArrayList;import java.util.Iterator;/** * 原生的迭代器用法 */public class UtilIteratorTest {public static void main(String[] args) {// TODO 自動生成的方法存根ArrayList<string> array = new ArrayList<string>();array.add("a");array.add("b");array.add("c");array.add("d");Iterator<string> it = array.iterator();while(it.hasNext()){System.out.println(it.next());}}}
也可自定義MyIterator實現:
Iterator:自定義迭代器接口
public interface Iterator {// 前移public Object previous();// 后移public Object next();// 是否還有下個元素public boolean hasNext();// 取得第一個元素public Object first();}
Collection:定義一個用來處理集合接口
public interface Collection {public Iterator iterator();/* 取得集合元素 */public Object get(int i);/* 取得集合大小 */public int size();}
MyIterator:實現迭代器接口
public class MyIterator implements Iterator { private Collection collection; private int pos = -1; public MyIterator(Collection collection){ this.collection = collection; } @Override public Object previous() { if(pos > 0){ pos--; } return collection.get(pos); } @Override public Object next() { if(pos<collection.size()-1){ pos++; } return collection.get(pos); } @Override public boolean hasNext() { if(pos<collection.size()-1){ return true; }else{ return false; } } @Override public Object first() { pos = 0; return collection.get(pos); } }
MyCollection:實現該集合接口
public class MyCollection implements Collection { public String[] string = {}; public MyCollection(String[] array){ string = array; } @Override public Iterator iterator() { return new MyIterator(this); } @Override public Object get(int i) { return string[i]; } @Override public int size() { return string.length; } }
執行過程:
String[] array = { "A", "B", "C", "D", "E" }; Collection collection = new MyCollection(array); Iterator it = collection.iterator(); while (it.hasNext()) { System.out.println(it.next()); }
執行結果:
A B C D E
看文倉www.92to.com網友整理上傳,為您提供最全的知識大全,期待您的分享,轉載請注明出處。
歡迎轉載:http://www.kanwencang.com/bangong/20161231/80344.html
文章列表
全站熱搜