您的位置:首页 > 其它

迭代器模式/iterator模式/对象行为型模式

2016-09-22 17:50 369 查看

意图

又名:游标(Cursor);

提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。

动机

一个聚合对象,提供访问元素的方法,而有不暴露它的内部结构。如list,将对列表的访问和遍历从列表对象中分离出来并放入一个迭代器(iterator)中。迭代器定义了一个访问该列表元素的接口。迭代器负责跟踪当前元素。

java实现要素:迭代器接口+迭代器+集合接口+集合实现

集合接口中定义,返回迭代器的接口方法

集合对象中具体实现返回的迭代器

代码实现

//迭代器接口
public interface Iterator <T>{
boolean hasNext();
T next();
T get(int index);
}

//集合接口
public interface List <T>{
Iterator<T> iterator();
public T get(int i);
public int size();
}

//集合实现,采用内部类实现迭代器。内部类可以操作外部类数据(私有数据)。
public class MyList  implements List<String>{
private String[] data = {"A","B","C","D","E"};
public Iterator<String> iterator(){
return new itr();
}

public String get(int i){
return data[i];
}

public int size(){
return data.length;
}

private class itr implements Iterator<String>{
private int pos=-1;
@Override
public boolean hasNext() {
if (pos<data.length-1) {
return true;
}
return false;
}

@Override
public String next() {
if (pos<data.length-1) {
++pos;
}
return data[pos];
}

@Override
public String get(int index) {
if (index<data.length) {
return data[pos];
}
return "";
}
}
}

//测试
public class Test {
public static void main(String[] args) {
MyList myList=new MyList();
Iterator<String> iterator=myList.iterator();
while(iterator.hasNext()){
System.out.println(iterator.next());
}
}
}




JDK中的迭代器模式


整个JCF,遍地都是.....


* @see     Set
* @see     List
* @see     Map
* @see     SortedSet
* @see     SortedMap
* @see     HashSet
* @see     TreeSet
* @see     ArrayList
* @see     LinkedList
* @see     Vector
* @see     Collections
* @see     Arrays
* @see     AbstractCollection
* @since 1.2
*/

public interface Collection<E> extends Iterable<E> {
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: