热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

深入解析ArrayList中的迭代器(Iterator)实现机制

本文深入探讨了`ArrayList`中迭代器(`Iterator`)的实现机制。通过分析`Iterator`接口的设计原理,揭示了其在处理大规模数据集时的优势。与直接使用Java的`List`或`Set`相比,`Iterator`能够更高效地管理内存资源,避免因大量数据加载而导致的堆内存溢出问题。此外,文章还介绍了`Iterator`在多线程环境下的安全性和性能优化策略。

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

1、Iterator接口允许返回非常大的数据;

2、使用java的list、set返回大量数据就需要大量堆内存;

5、ArrayList 的Iterator 实现:

private class Itr implements Iterator {//内部类//do something}

(1) Itr 内部定义了三个 int 型的变量:cursor、lastRet、expectedModCount;

(2) cursor 表示下一个元素的索引位置,lastRet 表示上一个元素的索引位置;

(3)modCount 用于记录 ArrayList 集合的修改次数;

(4)expectedModCount预期被修改的次数;

6、在java中,遍历并删除List中的元素,通常使用以下代码:

(1)正确代码:

145116_848n_3847203.png

(2)错误代码:

145229_vdTB_3847203.png

(3)原因剖析:

150539_4gvw_3847203.png

150616_k5qO_3847203.png

7、ArrayList内部实现的Iterator:

(1)    private class Itr implements Iterator 

Iterator it=aList.iterator();

(2)    private class ListItr extends Itr implements ListIterator

  • 实现方法更多,比如遍历时添加元素;

ListIterator listIt = aList.listIterator();

151314_AFFV_3847203.png


转:https://my.oschina.net/u/3847203/blog/1813536



推荐阅读
  • 本文提供了一系列Python编程基础练习题,涵盖了列表操作、循环结构、字符串处理和元组特性等内容。通过这些练习题,读者可以巩固对Python语言的理解并提升编程技能。 ... [详细]
  • 数组元素逆序排列的实现
    本文介绍了一种简单有效的方法,用于将整数数组中的元素进行逆序排列。通过折半交换对应位置的元素,可以高效地完成这一任务。 ... [详细]
  • 深入理解Redis的数据结构与对象系统
    本文详细探讨了Redis中的数据结构和对象系统的实现,包括字符串、列表、集合、哈希表和有序集合等五种核心对象类型,以及它们所使用的底层数据结构。通过分析源码和相关文献,帮助读者更好地理解Redis的设计原理。 ... [详细]
  • 在Python开发过程中,随着项目数量的增加,不同项目依赖于不同版本的库,容易引发依赖冲突。为了避免这些问题,并保持开发环境的整洁,可以使用Virtualenv和Virtualenvwrapper来创建和管理多个隔离的Python虚拟环境。 ... [详细]
  • 本文深入探讨了Python中的高阶函数和Lambda表达式的使用方法,结合实际案例解析其应用场景,帮助开发者更好地理解和运用这些强大的工具。 ... [详细]
  • PostgreSQL 10 离线安装指南
    本文详细介绍了如何在无法联网的服务器上进行 PostgreSQL 10 的离线安装,并涵盖了从下载安装包到配置远程访问的完整步骤。 ... [详细]
  • 信用评分卡的Python实现与评估
    本文介绍如何使用Python构建和评估信用评分卡模型,涵盖数据预处理、模型训练及验证指标选择。附带详细代码示例和视频教程链接。 ... [详细]
  • 解决C++编译错误C3867的方法
    本文详细介绍了在不同版本的Visual Studio中,如何正确处理成员函数指针以避免编译错误C3867。同时,提供了一个具体的代码示例及其优化方案。 ... [详细]
  • 深入理解Shell脚本编程
    本文详细介绍了Shell脚本编程的基础概念、语法结构及其在操作系统中的应用。通过具体的示例代码,帮助读者掌握如何编写和执行Shell脚本。 ... [详细]
  • GIMP 2.99.2 发布:UI 采用 GTK3 实现、原生支持高分屏和 Wayland
    开源项目评选最后一周,手里的5票再不用就没用了https:www.oschina.netprojecttop_cn_2020GIMP2.99.2已发布,同时这也标志着GIMP3.0的到来,其中最显著的变化是从GTK2过渡到GTK3工具包。基于 ... [详细]
  • 本文详细介绍了Java中的输入输出(IO)流,包括其基本概念、分类及应用。IO流是用于在程序和外部资源之间传输数据的一套API。根据数据流动的方向,可以分为输入流(从外部流向程序)和输出流(从程序流向外部)。此外,还涵盖了字节流和字符流的区别及其具体实现。 ... [详细]
  • 本题旨在通过给定的评级信息,利用拓扑排序和并查集算法来确定全球 Tetris 高手排行榜。题目要求判断是否可以根据提供的信息生成一个明确的排名表,或者是否存在冲突或信息不足的情况。 ... [详细]
  • 本文详细解析了如何使用Python的urllib模块发起POST请求,并通过实例展示如何爬取百度翻译的翻译结果。 ... [详细]
  • 不确定性|放入_华为机试题 HJ9提取不重复的整数
    不确定性|放入_华为机试题 HJ9提取不重复的整数 ... [详细]
  • 在Java中,this是一个引用当前对象的关键字。如何通过this获取并显示其所指向的对象的属性和方法?本文详细解释了this的用法及其背后的原理。 ... [详细]
author-avatar
温恭凯364092
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有