迭代器的實現原理

迭代器的實現原理java

集合有不一樣的類,有不一樣的數據結構,存儲方式和遍歷也不一樣。故此定義迭代接口數據結構

真正實現的類在真正具體的子類中,之內部類實現的dom

public interface Iterator<E> {this

boolean hasNext();

E next();

void remove(); }code

Iterable接口接口

public interface Iterable<T> {element

Iterator<T> iterator();

}rem

//Collection接口it

public interface Collection<E> extends Iterable<E> {io

Iterator<E> iterator(); } // List接口

public interface List<E> extends Collection<E> {

Iterator<E> 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;       // index of next element to return
	
    int lastRet = -1; // index of last element returned; -1 if no
	such
    int expectedModCount = modCount;
	

    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];
		
    }

}

相關文章
相關標籤/搜索