迭代器(Iterator)遍历的两种方法(for和while)

简介: 迭代器(Iterator)遍历的两种方法(for和while)

一般遍历list的时候,我们习惯下面的写法,但这种写法有缺陷,不能及时释放iterator的内存

while循环遍历

@Test
public  void testIteratorWhile(){
    ArrayList<String> lists = new ArrayList<>();
    lists.add("A");
    lists.add("B");
    lists.add("C");
    Iterator<String> iterator = lists.iterator();
    while (iterator.hasNext()){
        String next = iterator.next();
        System.out.println(next);
    }
}



有经验的开发者,一般都会这么写,因此for循环比while好用许多

for循环遍历

@Test
public  void  testIteratorFor(){
    ArrayList<String> lists = new ArrayList<>();
    lists.add("1");
    lists.add("2");
    lists.add("3");
    for(Iterator it = lists.iterator(); it.hasNext(); ) {
        System.out.println(it.next());
    }
}



下面的方法,也是推荐的,尤其是在高并发的情况下,可以节省内存资源,在大括号中间声明的变量,他的声明周期就在大括号内

@Test
public  void testIteratorWhile(){
    ArrayList<String> lists = new ArrayList<>();
    lists.add("A");
    lists.add("B");
    lists.add("C");
    {
        Iterator<String> iterator = lists.iterator();
        while (iterator.hasNext()){
            String next = iterator.next();
            System.out.println(next);
        }
    }
}

相关文章
|
SQL
Mybatis.xml文件中大于小于等于
Mybatis.xml文件中大于小于等于
511 0
|
自然语言处理 安全 C++
【C++ 格式化输出 】C++20 现代C++格式化:拥抱std--format简化你的代码
【C++ 格式化输出 】C++20 现代C++格式化:拥抱std--format简化你的代码
10652 4
|
2月前
|
人工智能 Linux API
完整版OpenClaw(龙虾)安装与使用指南|阿里云+本地全平台部署+千问/Coding Plan配置+Skills接入教程
OpenClaw(圈内昵称“龙虾”)是2026年最受关注的开源自动化AI智能体框架,凭借**本地优先、自动执行、长期记忆、主动干活**四大核心能力,彻底区别于传统被动式聊天AI。它可以自主操作浏览器、控制桌面、执行任务、7×24小时运行,并通过向量记忆越用越懂你,真正成为能帮你创造收益、节省时间的数字员工。
2389 5
|
C语言 C++
【c++】c++ 编译链接时提醒 搜索动态库 -lxxxx 时跳过不兼容的libxxx.so
问题描述:这个问题的表现是——在通过g++或者gcc编译链接可执行程序的时候因为代码使用需要,需要添加对应 的三方库,这个时候在编译指令中 需要添加 动态库添加指令 告诉 ld 链接 对应名称的动态库、或者静态库。
998 0
【c++】c++ 编译链接时提醒 搜索动态库 -lxxxx 时跳过不兼容的libxxx.so
|
Web App开发 监控 网络协议
网络分析与监控:阿里云拨测方案解密
网络分析与监控:阿里云拨测方案解密
397 0
|
存储 Java API
Java实现导出多个excel表打包到zip文件中,供客户端另存为窗口下载
Java实现导出多个excel表打包到zip文件中,供客户端另存为窗口下载
1126 4
|
Java Spring
【SpringBoot】技能一之修改端口与banner样式
【SpringBoot】技能一之修改端口与banner样式
344 5
|
编解码 缓存 算法
视频帧里的I帧、P帧、B帧是什么?
I帧、P帧、B帧是视频编码中的基本概念。I帧是帧内编码帧,无需参考其他帧即可解码;P帧是前向预测编码帧,基于前一帧解码;B帧是双向预测编码帧,基于前后帧解码。IDR帧是一种特殊的I帧,用于即时解码刷新,防止错误传播。GOP(Group of Pictures)是一组连续的画面,第一个帧为I帧,gop_size设置越大,画质越好,但解码延迟增加。OpenGOP允许GOP间的帧依赖,而ClosedGOP则不允许。DTS(解码时间戳)和PTS(显示时间戳)分别用于解码和显示时间控制。
IDEA设置Tabs多行显示的方法
这篇文章介绍了在IntelliJ IDEA中设置多行显示Tabs的方法,包括如何取消单行展示Tabs并设置可展示的Tabs数量。
IDEA设置Tabs多行显示的方法
|
Oracle 关系型数据库 MySQL
Mysql和Oracle数据库死锁查看以及解决
【8月更文挑战第11天】本文介绍了解决MySQL与Oracle数据库死锁的方法。MySQL可通过`SHOW ENGINE INNODB STATUS`查看死锁详情,并自动回滚一个事务解除死锁;也可手动KILL事务。Oracle则通过查询V$LOCK与V$SESSION视图定位死锁,并用`ALTER SYSTEM KILL SESSION`命令终止相关会话。预防措施包括遵循ACID原则、优化索引及拆分大型事务。
1369 3

热门文章

最新文章