• java 迭代器概述和ArrayList迭代 , Iterator是接口


    集合框架(迭代器的原理及源码解析)
    * A:迭代器原理
    * 迭代器原理:迭代器是对集合进行遍历,而每一个集合内部的存储结构都是不同的,所以每一个集合存和取都是不一样,那么就需要在每一个类中定义hasNext()和next()方法,这样做是可以的,但是会让整个集合体系过于臃肿,迭代器是将这样的方法向上抽取出接口,然后在每个类的内部,定义自己迭代方式,这样做的好处有二,第一规定了整个集合体系的遍历方式都是hasNext()和next()方法,第二,代码有底层内部实现,使用者不用管怎么实现的,会用即可

    * B:迭代器源码解析  (源码)          

    由于Iterator只是接口,因此每个集合类实现Iterator的代码都不一样 ;这里查看ArrayList------ Iterator方法

    public Iterator<E> iterator() {
    return new Itr();
    }

    /**
    * An optimized version of AbstractList.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;
    }

    @SuppressWarnings("unchecked")
    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];
    }




  • 相关阅读:
    引自天天安全网 ——※ 中华民族传统文化精髓___二十四孝 ※
    Microsoft 技术与安全大会
    Linux的用户和用户组管理
    vsftpd设置与使用总结
    MySQL与NoSQL——SQL与NoSQL的融合
    linux下查看用户及用户组的方法
    软件系统开发中的数据交换协议
    Ubuntu实用简单的FTP架设
    淘宝网商品库优化实践访谈
    current attention url
  • 原文地址:https://www.cnblogs.com/yimian/p/6511687.html
Copyright © 2020-2023  润新知