Java中的Iterator底层原理实现

这篇具有很好参考价值的文章主要介绍了Java中的Iterator底层原理实现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

两个抽象方法

Iterator主要有两个抽象方法,让子类实现。

hasNext()用来判断还有没有数据可供访问。next()方法用于访问集合的下一个数据。

这两个方法不像List的get()那样依赖索引获取数据,也不像Queue的poll方法那样依赖特定规则获取数据。

迭代器的方法将通用性做到了极致,可以访问不同特性的集合数据,而无需关心他们的内部实现

实现方法

集合不是直接去实现Iterator接口,而是实现的Iterable接口,用这个Iterable定义的方法去返回当前集合的迭代器

Java中的Iterator底层原理实现
Collection就继承了Iterable接口,所以Collection体系的集合都得按照这种方式返回迭代器以供大家访问数据。

为什么要使用这种方式来使用迭代器?

因为集合直接实现迭代器的话,那么别人调用了集合的next()方法就会影响到你遍历数据

你本来希望从头开始遍历所有数据,然而别人可能已经将数据遍历完了,你就拿不到数据了。而通过实现Iterable这种方式,就可以每次返回新的迭代器。不同迭代器之间遍历数据互不影响。所以这里也就能看出Iterator是具有独立性和隔离性的。

迭代器除了有屏蔽集合间不同特性之外,在Java中还有一个好处就是如果你实现了Iterator接口,并按要求返回了迭代器,那你就可以使用for each循环了去直接遍历数据

总结

Iterable用来返回迭代器,实现了该接口的类,就算是可迭代对象了,可以直接使用for-each循环访问数据。

Iterator就是迭代器,用来遍历集合的数据,并无需关心集合的内部实现for-each循环底层用的就是迭代器

参考资料:【每天一个技术点】迭代器之:Iterable & Iterator文章来源地址https://www.toymoban.com/news/detail-411480.html

到了这里,关于Java中的Iterator底层原理实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【设计模式——学习笔记】23种设计模式——迭代器模式Iterator(原理讲解+应用场景介绍+案例介绍+Java代码实现)

    编写程序展示一个学校院系结构: 需求是这样,要在一个页面中展示出学校的院系组成,一个学校有多个学院,一个学院有多个系 【传统方式】 将学院看做是学校的子类,系是学院的子类,小的组织继承大的组织 分析: 在一个页面中展示出学校的院系组成,一个学校有多个

    2024年02月14日
    浏览(42)
  • java八股文面试[多线程]——Synchronized的底层实现原理

    笔试:画出Synchronized 线程状态流转 实现原理图 synchronized解决的是多个线程之间访问资源的同步性,synchronized 翻译为中文的意思是 同步 ,也称之为”同步锁“。 synchronized的作用是保证在 同一时刻 , 被修饰的代码块或方法只会有一个线程执行,以达到保证并发安全的

    2024年02月10日
    浏览(48)
  • 深入分析Java中的PriorityQueue底层实现与源码

    本文分享自华为云社区《滚雪球学Java(70):深入理解Java中的PriorityQueue底层实现与源码分析》,作者: bug菌。 @[toc] PriorityQueue是Java中一个非常常用的数据结构,它可以实现基于优先级的排序,常用于任务调度、事件处理等场景。本文将深入探讨Java中PriorityQueue的底层实现与源

    2024年03月19日
    浏览(44)
  • 3种方法,用Java找出两个List中的重复元素

    本文分享自华为云社区《如何用Java找出两个List中的重复元素,读这一篇就够了》,作者: 努力的阿飞。 在Java编程中,我们经常需要找出两个列表(List)中的重复元素。在本文中,我们将探讨三种方法来实现这一目标。 Java中的HashSet是一个不允许有重复元素的集合。我们可

    2024年02月08日
    浏览(50)
  • Java LongAdder类介绍、代码示例、底层实现原理及与分段锁的区别

    LongAdder是Java并发包(java.util.concurrent)中的一个类,用于高效地实现多线程环境下的加法操作。 在多线程环境中,如果多个线程同时对同一个变量进行加法操作,会存在竞争条件(race condition)。传统的加法操作使用synchronized或者锁来保证线程安全,但是在高并发情况下

    2024年02月12日
    浏览(36)
  • Java并发编程挑战与解决方案:上下文切换、死锁、资源限制及底层实现原理

    深入探讨Java并发编程中的挑战,包括上下文切换、死锁、资源限制,并介绍解决方案如减少上下文切换、避免死锁等。了解Java并发机制的底层实现原理和线程间通信方法。

    2024年02月01日
    浏览(45)
  • spring中的事务及底层原理

    在Spring框架中,事务管理是一个关键的特性,它允许开发者在应用程序中声明性地管理事务。Spring事务管理的核心是基于AOP(面向切面编程)和IOC(控制反转)的思想。以下是Spring中事务管理的一些重要概念和底层原理: 事务管理器(Transaction Manager): Spring事务管理的底层

    2024年01月19日
    浏览(41)
  • python中的 collections 模块(用法、详解、底层原理,示例等)

    1.1 defaultdict 功能 可以设置一个默认值作为字典中新key的默认值。该默认值可以是任何对象, 包括函数、列表、元组、集合等。默认值不需要像dict那样事先定义,因为它在需要的时候会自动创建 使用defaultdict,可以简化代码并提高代码的可读性,而且可以防止KeyError异常的出

    2024年04月29日
    浏览(39)
  • Java中List接口两个实现,ArrayList类和LinkedList类的常用方法(一)

    要了解List接口,就不得不说起Java的集合框架。 (该图来自菜鸟教程) Java 集合框架主要包括两种类型的容器,集合Collection和图Map。 Collection接口代表了 单列集合 ,它包含了一组Object元素,每个元素都有一个值。 (这里有个“泛型擦除”的概念,在此不提及有兴趣可自行了

    2024年01月19日
    浏览(39)
  • 【Java 基础】ConcurrentHashMap 底层原理

    tip:作为程序员一定学习编程之道,一定要对代码的编写有追求,不能实现就完事了。我们应该让自己写的代码更加优雅,即使这会费时费力。 推荐:体系化学习Java(Java面试专题) ConcurrentHashMap 是线程安全的哈希表,它是 Java 并发包中提供的一种高效的并发 Map 实现。Con

    2024年02月11日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包