当前位置: 首页 > news >正文

每日一道面试题之Iterator 和 ListIterator 有什么区别?

IteratorListIterator 都是 Java 集合框架中用于遍历集合元素的接口,但它们有一些区别:

使用的范围Iterator可以迭代所有集合,而ListIterator 只能用于List及其子类

继承关系ListIterator 继承 Iterator,并且ListIterator包含的方法更多

遍历的方向Iterator 接口只能向前遍历集合元素,而 ListIterator 接口可以双向遍历,即向前或向后遍历集合元素。

遍历的能力Iterator 接口只能遍历集合,而 ListIterator 接口除了遍历集合元素外,还可以修改集合中的元素添加新的元素,以及获取当前遍历位置的索引。

遍历的起点Iterator 接口的遍历起点是集合的开头,而 ListIterator 接口可以通过 hasPrevious()previous() 方法从集合的末尾开始遍历。

遍历的性能Iterator 接口的遍历性能通常比 ListIterator 接口更好,因为 ListIterator 接口需要维护额外的指针和索引信息。

示例如下所示:

import java.util.ArrayList;
import java.util.Iterator;
import java.util.ListIterator;public class Test{public static void main(String[] args) {ArrayList<String> arrayList=new ArrayList<>();arrayList.add("张三");arrayList.add("李四");arrayList.add("王五");Iterator<String> iterator=arrayList.iterator();System.out.println("iterator遍历的结果为:");while(iterator.hasNext()){String element=iterator.next();System.out.print(element+" ");System.out.println();}ListIterator<String> listIterator=arrayList.listIterator();System.out.println("listIterator正向遍历的结果为:");while(listIterator.hasNext()){String element=listIterator.next();if(element.equals("王五")){//在遍历过程中,修改集合中的元素listIterator.set("Lisa");}System.out.println(element+" ");}ListIterator<String> listIterator2=arrayList.listIterator();System.out.println("listIterator修改后正向遍历的结果为:");while(listIterator2.hasNext()){String element=listIterator2.next();System.out.println(element+" ");}System.out.println("listIterator修改后反向遍历的结果为:");while(listIterator.hasPrevious()){String element=listIterator.previous();System.out.println(element+" ");}}
}

输出如下所示:

iterator遍历的结果为:
张三 
李四 
王五 
listIterator正向遍历的结果为:
张三 
李四 
王五 
listIterator修改后正向遍历的结果为:
张三 
李四 
Lisa 
listIterator修改后反向遍历的结果为:
Lisa 
李四 
张三

相关文章:

每日一道面试题之Iterator 和 ListIterator 有什么区别?

Iterator 和 ListIterator 都是 Java 集合框架中用于遍历集合元素的接口&#xff0c;但它们有一些区别: 使用的范围&#xff1a;Iterator可以迭代所有集合,而ListIterator 只能用于List及其子类。 继承关系&#xff1a;ListIterator 继承 Iterator&#xff0c;并且ListIterat…...

基于图像形态学处理的停车位检测matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1. 图像预处理 4.2. 车辆定位 4.3. 停车位检测 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 MATLAB2022a 3.部分核心程序 ......................................…...

【网络编程】同步IO/异步IO

同步IO的特点&#xff1a; 同步IO指的是用户进程触发I/O操作并等待或者轮询的去查看I/O操作是否就绪。 同步IO的执行者是IO操作的发起者。 同步IO需要发起者进行内核态到用户态的数据拷贝过程&#xff0c;所以这里必须阻塞 异步IO的特点&#xff1a; 异步IO是指用户进程触发I/O…...

五分钟理解NIO与BIO

java NIO与BIO的区别&#xff1f; BIO -- Blocking IO 即阻塞式 IO。NIO -- Non-Blocking IO, 即非阻塞式 IO 或异步 IO。 BIO 基于字节流和字符流进行操作&#xff0c;数据的读取写入必须阻塞在一个线程内等待其完成。 NIO 主要有三大核心部分&#xff1a; Channel (通道)…...

Python数据可视化工具——Pyecharts

目录 1 简介绘图前先导包 2 折线图3 饼图4 柱状图/条形图5 散点图6 箱线图7 热力图8 漏斗图9 3D柱状图10 其他&#xff1a;配置项 1 简介 Pyecharts是一款将python与echarts结合的强大的数据可视化工具 Pyecharts是一个用于生成echarts图表的类库。echarts是百度开源的一个数据…...

cjson常用API使用总结

json JSON&#xff08;JavaScript Object Notation&#xff09;是一种轻量级的数据交换格式&#xff0c;广泛用于前后端数据传输和存储。在C语言中&#xff0c;我们可以使用cjson库来处理JSON数据。本问总结了在使用cjson库中各个常用API的用法&#xff0c;包括组装JSON&#x…...

Shell脚本学习-case语句开发rsync服务的脚本

利用case语句开发类似系统启动rsync启动服务的脚本。&#xff08;可以参考系统rpcbind、nfs的脚本&#xff09;。 例如&#xff1a; /etc/init.d/rsyncd {start | stop | restart } rsync --daemon pkill rsync [rootvm1 scripts]# cat start_rsync.sh #!/bin/bash #[ -f /…...

使用docker部署一个jar项目

简介: 通过docker镜像, docker可以在服务器上运行包含项目所需运行环境的docker容器, 在线仓库里有很多各个软件公司官方发布的镜像, 或者第三方的镜像. 如果我们需要使用docker把我们的应用程序打包成镜像, 别的机器上只要安装了docker, 就可以直接运行镜像, 而不需要再安装应…...

【Linux命令200例】tee将输入内容输出到屏幕和文件

&#x1f3c6;作者简介&#xff0c;黑夜开发者&#xff0c;全栈领域新星创作者✌&#xff0c;阿里云社区专家博主&#xff0c;2023年6月csdn上海赛道top4。 &#x1f3c6;本文已收录于专栏&#xff1a;Linux命令大全。 &#x1f3c6;本专栏我们会通过具体的系统的命令讲解加上鲜…...

使用Vue+CSS实现汉堡图标过渡为叉号图标,有点意思

前言 本文给大家分享三个具有过渡效果的汉堡图标&#xff0c;当点击汉堡图标时&#xff0c;过渡为叉号图标。这种具有过渡特效的图标挺炫酷的&#xff0c;感觉一下子给网页增加一点新颖特色。早在2015年左右&#xff0c;国外挺多优秀门户网站都有使用类似的图标&#xff0c;那…...

python面试题【题目+答案】

最近遇到了一份python的面试题&#xff0c;题目比较简单&#xff0c;时间控制在一个小时之内。以下是面试的题目跟答案&#xff0c;答案不代表最优解&#xff0c;只是当时所想到的一些思路&#xff0c;接下来将分享给大家。 目录 1. 给出下面打印结果 2.字典如何删除键、如何…...

Rocky(centos) jar 注册成服务,能开机自启动

概述 涉及&#xff1a;1&#xff09;sh 无法直接运行java命令&#xff0c;可以软连&#xff0c;此处是直接路径 2&#xff09;sh脚本报一堆空格换行错误&#xff1a;需将转成unix标准格式&#xff1b; #切换到上传的脚本路径 dos2unix 脚本文件名.sh 2&#xff09;SELINUX …...

科大讯飞-鸟类分类挑战赛-测试【1】

科大讯飞-鸟类分类挑战赛-测试【1】 1. 比赛说明2. EfficientNet测试2.1 **模型搭建:**2.2 **模型训练:**2.3 训练过程可视化2.4 一些报错解决:1. 比赛说明 背景: 随着生态环境的不断变化和人类对自然资源的过度开发,世界各地的鸟类数量和种类正在发生着巨大的变化。为了更…...

两行CSS让页面提升渲染性能

content-visibility是CSS新增的属性&#xff0c;主要用来提高页面渲染性能&#xff0c;它可以控制一个元素是否渲染其内容&#xff0c;并且允许浏览器跳过这些元素的布局与渲染。 content-visibility: hidden的效果与display: none类似其区别在于&#xff1a; content-visibi…...

UniApp中tabbar设置了position: fixed以及bottom:0后出现一条缝隙,看到了后面的内容

问题描述 解决方法 直接将bottom设置成-2px即可...

设计模式行为型——责任链模式

目录 什么是责任链模式 责任链模式的实现 责任链模式角色 责任链模式类图 责任链模式举例 责任链模式代码实现 责任链模式的特点 优点 缺点 使用场景 注意事项 实际应用 什么是责任链模式 责任链模式&#xff08;Chain of Responsibility Pattern&#xff09;又叫职…...

Xamarin.Android中Intent的使用

目录 1、说明2、使用方法2.1 常用方法2.2 调用系统应用 3、参考资料 1、说明 在Android开发中常常会用到Intent进行不同活动启动&#xff0c;整理资料如下 2、使用方法 2.1 常用方法 1、一般情况而言&#xff0c;都是使用如下的方式进行调用 Intent intent new Intent(th…...

matplotlib绘制方波圆周分解动画

1 方波的圆周分解 在学习傅里叶变换的时候&#xff0c;有一个经典的示例是方波的分解。我们知道&#xff0c;方波可以分解为无数个正弦波的叠加。而正弦波&#xff0c;又可以看作是圆周运动在一条直线上的投影。当时为了理解这个事情&#xff0c;恐怕大家也花了不少时间。 学…...

vue3+ts 实现枚举

首先 index.ts 中定义枚举 export const fruit [{key:1,name:苹果,},{key:11,name:草莓},{key:5,name:香蕉,},{key:51,name:葡萄,},{key:6,name:橙子},{key:7,name:哈密瓜},{key:10,name:西瓜}, ]; 接口返给的数据是一个对象 feeMap{ 1&#xff1a;200&#xff0c; 2&…...

【Python】5分钟了解11个最佳的Python编译器和解释器

11个最佳Python编译器和解释器 1. Brython2. Pyjs3. WinPython4. Skulpt5. Shed Skin6. Active Python7. Transcrypt8. Nutika9. Jython10. CPython11. IronPython结论原文链接 Python是一门初学者的编程语言。它是一种高级语言&#xff0c;非常灵活、解释性和面向对象的语言。…...

技术深度解析:logitech-pubg项目实现PUBG后坐力控制的Lua脚本架构设计

技术深度解析&#xff1a;logitech-pubg项目实现PUBG后坐力控制的Lua脚本架构设计 【免费下载链接】logitech-pubg PUBG no recoil script for Logitech gaming mouse / 绝地求生 罗技 鼠标宏 项目地址: https://gitcode.com/gh_mirrors/lo/logitech-pubg 在竞技射击游戏…...

用Multisim复刻经典24秒篮球计时器:从555时钟到数码管显示的保姆级仿真教程

用Multisim复刻经典24秒篮球计时器&#xff1a;从555时钟到数码管显示的保姆级仿真教程 篮球比赛中那令人窒息的最后24秒倒计时&#xff0c;不仅是球员的决胜时刻&#xff0c;也是电子爱好者眼中完美的数字电路实践案例。本文将带你用Multisim从零搭建一个完整的24秒计时系统&a…...

多进程和多线程的特点和区别

小编觉得&#xff0c;多进程和多线程的差异主要体现在以下三个方面&#xff1a; 1. 资源隔离 多线程属于同一进程&#xff0c;共享进程的堆内存和全局变量&#xff0c;因此线程间可以直接访问彼此共享的数据。但需要注意的是&#xff0c;每个线程也拥有自己私有的栈空间&…...

基于vue的断舍离管理系统[vue]-计算机毕业设计源码+LW文档

摘要&#xff1a;随着物质生活的丰富&#xff0c;物品管理成为人们生活中的一个重要问题。断舍离管理系统的设计与实现旨在帮助用户更好地管理个人物品&#xff0c;通过合理的分类、捐赠和回收机制&#xff0c;实现物品的有效清理和资源的合理利用。本文基于Vue框架设计并实现了…...

你还在用for循环清洗CSV?Polars 2.0的scan_csv()+expression DSL已支持自动列式推断与零拷贝转换——立即升级避免被淘汰

第一章&#xff1a;Polars 2.0大规模数据清洗的核心范式变革Polars 2.0 不再将数据清洗视为一系列离散的、命令式的转换操作&#xff0c;而是以“惰性执行图列式语义优先”为基石&#xff0c;重构整个清洗生命周期。其核心变革体现在计算模型、内存管理与API设计三重维度的协同…...

Pixel Couplet Gen应用场景:微信小程序‘灵蛇贺岁’互动模块开发全解析

Pixel Couplet Gen应用场景&#xff1a;微信小程序灵蛇贺岁互动模块开发全解析 1. 项目背景与核心价值 在传统节日数字化呈现的浪潮下&#xff0c;我们开发了"灵蛇贺岁"微信小程序互动模块。这款基于ModelScope大模型的春联生成器&#xff0c;通过创新的像素游戏风…...

手把手教你用STM32F103C8T6+DHT11做个智能加湿器(附完整代码和PCB文件)

从零打造智能加湿器&#xff1a;STM32F103C8T6与DHT11的完美组合 在干燥的秋冬季节&#xff0c;一台能够自动调节湿度的智能加湿器不仅能提升生活舒适度&#xff0c;更是电子爱好者展示技能的绝佳项目。本文将带你从元器件选型开始&#xff0c;逐步完成一个基于STM32F103C8T6单…...

自动驾驶开发必备:Vscode+Git双神器组合的隐藏技巧(含分支管理秘籍)

自动驾驶开发必备&#xff1a;VscodeGit双神器组合的隐藏技巧&#xff08;含分支管理秘籍&#xff09; 在自动驾驶开发领域&#xff0c;高效的代码管理和协作流程是项目成功的关键因素。随着代码库规模不断扩大&#xff0c;团队规模持续增长&#xff0c;传统的版本控制方式往往…...

彩灯广告屏PLC控制S7-200程序:包含梯形图、接线图、原理图及IO分配与组态画面详解

彩灯广告屏的PLC控制S7-200程序 程序 我们主要的后发送的产品有&#xff0c;带解释的梯形图接线图原理图图纸&#xff0c;io分配&#xff0c;组态画面上周刚帮客户搞定了一套户外彩灯广告屏的PLC控制项目&#xff0c;用的还是经典的S7-200&#xff0c;本来以为老架构玩不出花…...

SeqGPT-560M效果展示:跨句指代消解能力——‘该公司’→‘北京智云科技有限公司’

SeqGPT-560M效果展示&#xff1a;跨句指代消解能力——‘该公司’→‘北京智云科技有限公司’ 今天&#xff0c;我想和你聊聊一个在信息抽取领域里特别“聪明”的能力——跨句指代消解。听起来有点专业&#xff0c;对吧&#xff1f;别担心&#xff0c;我用大白话给你解释。 想…...