JDK7集合框架原始碼學習-ArrayList(3)迭代器
ArrayList實現了ListIterator介面
這個介面在Iterator介面的基礎上,可以查詢前驅和後繼節點.還能新增和修改.
ArrayList的ListIterator實現.
- public interface ListIterator<E> extends Iterator<E> {
- boolean hasNext();
- E next();
- boolean hasPrevious();
- E previous();
- int nextIndex();
- int previousIndex();
- void remove();
- void set(E e);
- void add(E e);
- }
這個介面在Iterator介面的基礎上,可以查詢前驅和後繼節點.還能新增和修改.
ArrayList的ListIterator實現.
- private class ListItr extends Itr implements ListIterator<E> {
- ListItr(int index) {
- super();
- cursor = index;
- }
- public boolean hasPrevious() {
- return cursor != 0;
- }
- public int nextIndex() {
- return cursor;
- }
- public int previousIndex() {
- return cursor - 1;
- }
- @SuppressWarnings("unchecked")
- public E previous() {
- checkForComodification();
- int i = cursor - 1;
- if (i < 0)
- throw new NoSuchElementException();
- Object[] elementData = ArrayList.this.elementData;
- if (i >= elementData.length)
- throw new ConcurrentModificationException();
- cursor = i;
- return (E) elementData[lastRet = i];
- }
- public void set(E e) {
- if (lastRet < 0)
- throw new IllegalStateException();
- checkForComodification();
- try {
- ArrayList.this.set(lastRet, e);
- } catch (IndexOutOfBoundsException ex) {
- throw new ConcurrentModificationException();
- }
- }
- public void add(E e) {
- checkForComodification();
- try {
- int i = cursor;
- ArrayList.this.add(i, e);
- cursor = i + 1;
- lastRet = -1;
- expectedModCount = modCount;
- } catch (IndexOutOfBoundsException ex) {
- throw new ConcurrentModificationException();
- }
- }
- }
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29254281/viewspace-2121743/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- JDK7集合框架原始碼學習-ArrayList(2)迭代器JDK框架原始碼
- JDK7集合框架原始碼學習-ArrayList(0)JDK框架原始碼
- JDK7集合框架原始碼學習-ArrayList(1)JDK框架原始碼
- JDK7集合框架原始碼學習-ArrayList(4)SubListJDK框架原始碼
- 集合框架原始碼學習之ArrayList框架原始碼
- JDK7集合框架原始碼學習-ArrayDequeJDK框架原始碼
- Java集合原始碼學習(2)ArrayListJava原始碼
- Java 集合框架------ArrayList原始碼分析Java框架原始碼
- Java 集合框架 ArrayList 原始碼剖析Java框架原始碼
- 集合原始碼分析[3]-ArrayList 原始碼分析原始碼
- 設計模式(十七)——迭代器模式(ArrayList 集合應用原始碼分析)設計模式原始碼
- 集合框架-ArrayList集合的toString()方法原始碼解析框架原始碼
- 集合-ArrayList 原始碼解析原始碼
- 集合框架原始碼學習之LinkedList框架原始碼
- 【集合框架】JDK1.8原始碼分析之ArrayList(六)框架JDK原始碼
- 【Java集合】ArrayList原始碼分析Java原始碼
- JAVA集合:ArrayList原始碼分析Java原始碼
- Java學習之集合框架的迭代器--Iteratorjk及ListItertor介面Java框架
- Java集合原始碼學習(3)LinkedListJava原始碼
- 【集合框架】JDK1.8原始碼分析之HashMap & LinkedHashMap迭代器(三)框架JDK原始碼HashMap
- Java集合原始碼剖析——ArrayList原始碼剖析Java原始碼
- 【Java集合原始碼剖析】ArrayList原始碼剖析Java原始碼
- Java容器原始碼學習--ArrayList原始碼分析Java原始碼
- 集合框架原始碼學習之HashMap(JDK1.8)框架原始碼HashMapJDK
- Java集合之ArrayList原始碼解析Java原始碼
- java集合原始碼分析(三):ArrayListJava原始碼
- JAVA ArrayList集合底層原始碼分析Java原始碼
- Java集合乾貨——ArrayList原始碼分析Java原始碼
- 集合------集合框架Collection/Iterator迭代器/增強for迴圈框架
- 集合框架2- ArrayList框架
- Java集合框架(一)-ArrayListJava框架
- Java 集合框架(二)—— ArrayListJava框架
- java集合學習(一):詳解ArrayListJava
- 死磕 java集合之ArrayList原始碼分析Java原始碼
- Java集合-ArrayList原始碼解析-JDK1.8Java原始碼JDK
- Java集合乾貨1——ArrayList原始碼分析Java原始碼
- 純手寫Arraylist集合框架框架
- Java 集合 ArrayList 原始碼分析(帶著問題看原始碼)Java原始碼