迭代器的实现原理

迭代器的实现原理

集合有不同的类,有不同的数据结构,存储方式和遍历也不同。故此定义迭代接口

真正实现的类在真正具体的子类中,以内部类实现的

public interface Iterator<E> {

boolean hasNext();

E next();

void remove(); }

Iterable接口

public interface Iterable<T> {

Iterator<T> iterator();

}

//Collection接口

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

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

}

转载于:https://my.oschina.net/u/2511906/blog/3002927

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值