迭代器的实现原理

迭代器的实现原理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];
		
    }

}

相关文章
相关标签/搜索