zoukankan      html  css  js  c++  java
  • 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];
    }




  • 相关阅读:
    《Exceptional C++ Style中文版》 作者:Herb Sutter 定价39元
    11.24 《阿猫阿狗2》精美包装艳丽登场
    STLport 5.0.1 available for download.
    编程时需要注意的一些原则
    面向对象设计原则
    ASP.NET下MVC设计模式的实现
    string 与stringbuilder的区别
    工厂方法模式(Factory Method)
    面向对象设计(OOD)的基本原则
    HUTXXXX DNAANDDNA 贪心
  • 原文地址:https://www.cnblogs.com/yimian/p/6511687.html
Copyright © 2011-2022 走看看