zoukankan      html  css  js  c++  java
  • Java 迭代器


    目前先简单使用认识迭代器,留坑,后续深入了解

    迭代器

    从集合篇了解到,Java集合容器的种类有很多种,ArrayList、LinkedList、HashSet...,每种容器都有自己的特点,ArrayList底层维护的是一个数组;LinkedList是链表结构的;HashSet依赖的是哈希表,每种容器都有自己特有的数据结构。

    因为容器的内部结构不同,很多时候可能不知道该怎样去遍历一个容器中的元素。所以为了使对容器内元素的操作更为简单,Java引入了迭代器模式

    把访问逻辑从不同类型的集合类中抽取出来,从而避免向外部暴露集合的内部结构。

    Iterator

    Iterator iterList = li.iterator();  
    while(iterList.hasNext()){
        System.out.println(iterList.next());
    }
    
    • 最强大的迭代器
    • 它是一个接口类型,它不关心集合或数组的类型
    • 随时能修改删除元素
    • 能将遍历的操作与序列底层的结构分离,随时能换另一个遍历对象,降低了耦合性

    这里之所以可以在遍历过程中删除元素而不影响索引,是需要使用接口自己的移除方法,否则还是会报错

    Foreach

    for(int i :arr){
        System.out.println(i);
    }
    
    • 最方便的迭代器
    • 需要先知道集合的类型,即需要访问内部的成员
    • 失去了索引信息

    迭代效率

    • 对于小数量级的数据(一万以下),差别不大甚至for循环更快
    • 对于大数量级的数据,用iterator或foreach更快
    • 对于数组集合来说,三者差不多,foreach效率稍快
    • 对于链表集合来说,foreach和iterator效率一样快,但是for最慢
  • 相关阅读:
    Qt 读写XML文件
    用 Qt 中的 QDomDocument类 处理 XML 文件(上)
    Qss
    QTableWidget的使用和美工总结
    用 Qt 中的 QDomDocument类 处理 XML 文件(下)
    ArcEngine中最短路径的实现
    AE中网络分析的实现 的各个类之间的关系
    AE控制图层中要素可见状态的几种方法
    如何使用Name对象,包括WorkspaceNames和DatasetNames
    AE属性表操作
  • 原文地址:https://www.cnblogs.com/zohnn/p/11355028.html
Copyright © 2011-2022 走看看