JDK源码解析 迭代器模式在JAVA的很多集合类中被广泛应用,接下来看看JAVA源码中是如何使用迭代器模式的。
生活随笔
收集整理的這篇文章主要介紹了
JDK源码解析 迭代器模式在JAVA的很多集合类中被广泛应用,接下来看看JAVA源码中是如何使用迭代器模式的。
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
JDK源碼解析
迭代器模式在JAVA的很多集合類中被廣泛應用,接下來看看JAVA源碼中是如何使用迭代器模式的。
看完這段代碼是不是很熟悉,與我們上面代碼基本類似。單列集合都使用到了迭代器,我們以ArrayList舉例來說明
- List:抽象聚合類
- ArrayList:具體的聚合類
- Iterator:抽象迭代器
- list.iterator():返回的是實現了?Iterator?接口的具體迭代器對象
具體的來看看 ArrayList的代碼實現
public class ArrayList<E> extends AbstractList<E>implements List<E>, RandomAccess, Cloneable, java.io.Serializable {public Iterator<E> iterator() {return new Itr();}private class Itr implements Iterator<E> {int cursor; // 下一個要返回元素的索引int lastRet = -1; // 上一個返回元素的索引int expectedModCount = modCount; ?Itr() {}//判斷是否還有元素public boolean hasNext() {return cursor != size;} ?//獲取下一個元素public E next() {checkForComodification();int i = cursor;if (i >= size)throw new NoSuchElementException();Object[] elementData = ArrayList.this.elementData;if (i >= elementData.length)throw new ConcurrentModificationException();cursor = i + 1;return (E) elementData[lastRet = i];}... }這部分代碼還是比較簡單,大致就是在?iterator?方法中返回了一個實例化的?Iterator?對象。Itr是一個內部類,它實現了?Iterator?接口并重寫了其中的抽象方法。
注意:
當我們在使用JAVA開發的時候,想使用迭代器模式的話,
只要讓我們自己定義的容器類實現java.util.Iterable并實現其中的 iterator() 方法
使其返回一個?java.util.Iterator?的實現類就可以了。
總結
以上是生活随笔為你收集整理的JDK源码解析 迭代器模式在JAVA的很多集合类中被广泛应用,接下来看看JAVA源码中是如何使用迭代器模式的。的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JDK中提供的实现——通过 java.u
- 下一篇: 访问者模式用到了一种双分派的技术——静态