Java集合框架迭代器Iterator实现原理解析

 更新时间:2020年08月04日 09:55:39   作者:陈彦斌  
这篇文章主要介绍了Java集合框架迭代器Iterator实现原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

使用循环遍历集合

普通for循环

for(int i=0;i<10;i++){}

增强for循环

for(String str:list){}

什么是迭代器Iterator

Iterator是Java中的一个接口,核心作用就是用来遍历容器的元素,当容器实现了Iterator接口后,可以通过调用Iterator()方法获取一个Iterator对象

为啥是调用容器里面的Iterator方法呢?

因为容器的实现有多种,不同的容器遍历规则不一样,比如:ArrayList、LinkedList、HashSet、TreeSet等,所以设计了Iterator接口,让容器本身去实现这个接口,实现里面的方法,从而让开发人员不用关心容器的遍历机制,直接使用对应的方法即可

三个核心方法

  • boolean hashNext():用于判断Iterator内是否有下个元素,如果有则返回true,没有则false
  • Object next():返回Iterator的下一个元素,同时指针也会向后移动一位
  • void remove():删除指针的上一个元素(建议使用自己容器里的方法)
  public static void testSet() {
    Set<String> set = new HashSet<>();
    set.add("jack");
    set.add("tom");
    set.add("marry");
    set.add("tony");
    set.add("jack");
    Iterator<String> iterator = set.iterator();
    while (iterator.hasNext()) {
      String str = iterator.next();
      System.out.println(str);
    }
  }

  public static void testList() {
    List<String> list = new ArrayList<>();
    list.add("jack");
    list.add("tom");
    list.add("mary");
    list.add("tim");
    list.add("tony");
    list.add("eric");
    list.add("jack");
    Iterator<String> iterator = list.iterator();
    while (iterator.hasNext()) {
      String str = iterator.next();
      System.out.println(str);
    }
  }

迭代器和for循环对比

  • for循环适合顺序访问,或者通过下标进行访问
  • 迭代器适合链式结构
  • 最终要看使用场景,性能会有轻微差别,但是可以忽略

注意事项

迭代出的对象是引用的拷贝,如果修改迭代中的元素,那么就是修改容器对象的本身!!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Java中String的intern()方法详细说明

    Java中String的intern()方法详细说明

    这篇文章主要介绍了Java中String的intern()方法详细说明,String::intern()是一个本地方法,他的作用就是如果字符串常量池中已经包含了一个等于此String对象的字符串,则返回代表池中的这个字符串额String对象的引用,需要的朋友可以参考下
    2023-11-11
  • Java通过Fork/Join优化并行计算

    Java通过Fork/Join优化并行计算

    这篇文章主要为大家详细介绍了Java通过Fork、Join来优化并行计算,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-04-04
  • mybatis TypeHandler注入spring的依赖方式

    mybatis TypeHandler注入spring的依赖方式

    这篇文章主要介绍了mybatis TypeHandler注入spring的依赖方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-01-01
  • Java基础详解之集合框架工具Collections

    Java基础详解之集合框架工具Collections

    这篇文章主要介绍了Java基础详解之集合框架工具Collections,文中有非常详细的代码示例,对正在学习java的小伙伴们有很好地帮助,需要的朋友可以参考下
    2021-04-04
  • 新手了解java基础知识(二)

    新手了解java基础知识(二)

    这篇文章主要介绍了Java基础知识,本文介绍了Java语言相关的基础知识、历史介绍、主要应用方向等内容,需要的朋友可以参考下,希望对你有所帮助
    2021-07-07
  • Java 数组交集的实现代码

    Java 数组交集的实现代码

    这篇文章主要介绍了Java 数组交集的实现代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • 利用java监听器实现在线人数统计

    利用java监听器实现在线人数统计

    过去使用ASP和ASP.NET两种编程的时候,都写过在线人数统计能,实现功能挺简单的!今天使用java来实现在线人数统计有点另类,是通过Java监听器实现的,需要的朋友可以参考下
    2015-09-09
  • Java如何向Word模板中插入Base64图片和数据信息

    Java如何向Word模板中插入Base64图片和数据信息

    这篇文章主要介绍了Java如何向Word模板中插入Base64图片和数据信息问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • java异步调用的4种实现方法

    java异步调用的4种实现方法

    日常开发中,会经常遇到说,前台调服务,本文主要介绍了java异步调用的4种实现方法,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • SpringBoot 集成JUnit5的详细操作过程

    SpringBoot 集成JUnit5的详细操作过程

    JUnit5是最新的Java单元测试框架,提供了灵活的测试支持,它由JUnit Platform、JUnit Jupiter和JUnit Vintage组成,支持不同环境下的测试运行,SpringBoot从2.2版本开始默认支持JUnit5,本文介绍了SpringBoot 集成JUnit5的相关知识,感兴趣的朋友跟随小编一起看看吧
    2024-10-10

最新评论