设计模式学习笔记之迭代器模式
来源:互联网 发布:如何查看java源码 编辑:程序博客网 时间:2024/04/30 01:52
定义:迭代器模式提供一种方法顺序访问一个聚合对象的各个元素,而又不暴露其内部的表示。
public interface Iterator<E> {
boolean hasNext();
E next();
void remove();
}
public interface Iterable<T> {
Iterator<T> iterator();
}
下面是AbstractList对Iterable实现
public abstract class AbstractList<E> extends AbstractCollection<E> implements List<E> { // List接口实现了Collection<E>, Iterable<E>
protected AbstractList() {
}
... //其它代码省略
public Iterator<E> iterator() {
return new Itr(); // 这里返回一个迭代器
}
private class Itr implements Iterator<E> { // 内部类Itr实现迭代器
int cursor = 0;
int lastRet = -1;
int expectedModCount = modCount;
public boolean hasNext() { // 实现hasNext方法
return cursor != size();
}
public E next() { // 实现next方法
checkForComodification();
try {
E next = get(cursor);
lastRet = cursor++;
return next;
} catch (IndexOutOfBoundsException e) {
checkForComodification();
throw new NoSuchElementException();
}
}
public void remove() { // 实现remove方法
if (lastRet == -1)
throw new IllegalStateException();
try {
AbstractList.this.remove(lastRet);
if (lastRet < cursor)
cursor--;
lastRet = -1;
expectedModCount = modCount;
} catch (IndexOutOfBoundsException e) {
throw new ConcurrentModificationException();
}
}
final void checkForComodification() {
if (modCount != expectedModCount)
throw new ConcurrentModificationException();
}
}
}
- 设计模式学习笔记之迭代器模式
- 设计模式学习笔记之迭代器模式
- 设计模式学习笔记之迭代器模式
- 学习笔记之设计模式
- 设计模式学习笔记之工厂模式
- 设计模式学习笔记之原型模式
- 设计模式学习笔记之适配器模式
- 学习笔记 ---- 设计模式之观察者模式
- 设计模式之Proxy模式(学习笔记)
- 设计模式之ChainOfResponsibility模式(学习笔记)
- 设计模式之Command模式(学习笔记)
- 设计模式之State模式(学习笔记)
- 设计模式之观察者模式学习笔记
- 设计模式学习笔记之组合模式
- 设计模式学习笔记之策略模式
- 设计模式学习笔记之代理模式
- 设计模式学习笔记之工厂模式
- 设计模式学习笔记之原型模式
- C++常用的读写文件代码
- poj 1753 Flip Game
- IOS中触摸事件(touch event)的分发以及响应者链(The Responder Chain)机制理解
- 找不同
- 解决firefox打开flash死机的问题
- 设计模式学习笔记之迭代器模式
- UVALive 6495 Probability Paradox AC自动机+高斯消元
- 【转】MyEclipse下XFire开发Webservice实例
- HDU2199 Can you solve this equation 二分求方程的根
- Java equals()
- 电子证书
- zoj 1008
- 小米路由器shadowsocks+redsocks2
- Linux 2.6 内核阅读笔记 内核同步