1創建一個迭代器接口
package cursorpattern;
/**
* 迭代器接口
*/
public interface Iterator<T> {
T next();
boolean hasNext();
}
2 創建容器接口
package cursorpattern;
/**
* 容器接口
*/
public interface Aggregate<T> {
/**
* 向容器添加數據
* @param obj
*/
void add(T obj);
/**
* 從容器移除數據
* @param obj
*/
void remove(T obj);
/**
* 創建容器的迭代器
* @return
*/
Iterator<T> iterator();
}
3創建實現類
package cursorpattern;
import java.util.ArrayList;
import java.util.List;
/**
* 具體迭代器
*/
public class ConcreteIterator<T> implements Iterator<T>{
//創建容器
private List<T> list = new ArrayList<>();
//聲明遊標指針
private int cursor = 0;
public ConcreteIterator(List<T> list) {
this.list = list;
}
@Override
public T next() {
T obj = null;
if(hasNext()){
obj = list.get(cursor++);
}
return obj;
}
@Override
public boolean hasNext() {
return cursor != list.size();
}
}
4 創建實現類
package cursorpattern;
import java.util.ArrayList;
import java.util.List;
/**
* 具體容器
* @param <T>
*/
public class ConcreteAggregate<T> implements Aggregate<T>{
private List<T> list = new ArrayList<>();
@Override
public void add(T obj) {
list.add(obj);
}
@Override
public void remove(T obj) {
list.remove(obj);
}
@Override
public Iterator<T> iterator() {
return new ConcreteIterator<>(list);
}
}
5 迭代容器元素
package cursorpattern;
public class Client {
public static void main(String[] args) {
//創建具體容器對象
Aggregate<String> aggregate = new ConcreteAggregate<>();
//給容器添加數據
aggregate.add("好覅回覆IHF我i的華爲i就搜");
aggregate.add("好覅回覆IHF我i的華爲i就搜");
aggregate.add("好覅回覆IHF我i的華爲i就搜");
//獲取容器的迭代器
Iterator<String> iterator = aggregate.iterator();
//迭代器遍歷具體容器的元素
while (iterator.hasNext()) {
//獲取找到的下一個元素
System.out.println(iterator.next());
}
}
}