Iterator和ListIterator区别

Iterator和ListIterator的区别是什么? 此外,ListIterator 还有一些额外的方法,如 add()、set() 和 remove() 等,可以在迭代过程中修改 List 集合中的元素。Iterator 和 ListIterator 都是 Java 集合框架中的迭代器,其中 Iterator 是普遍适用于所有实现了 Iterable 接口的集合类的通用迭代器,而 ListIterator 则是专门用于遍历 List 集合的迭代器,它比 Iterator 更加强大,而且只适用于 List 集合。但是,它们之间有一些区别,这里简单介绍一下。 阅读详情

我们在使用List,Set的时候,为了实现对其数据的遍历,我们经常使用到了Iterator(迭代器)。使用迭代器,你不需要干涉其遍历的过程,只需要每次取出一个你想要的数据进行处理就可以了。

但是在使用的时候也是有不同的。List和Set都有iterator()来取得其迭代器。对List来说,你也可以通过listIterator()取得其迭代器,两种迭代器在有些时候是不能通用的,Iterator和ListIterator主要区别在以下方面:

1. ListIterator有add()方法,可以向List中添加对象,而Iterator不能

2. ListIterator和Iterator都有hasNext()和next()方法,可以实现顺序向后遍历,但是ListIterator有hasPrevious()和previous()方法,可以实现逆向(顺序向前)遍历。Iterator就不可以。

3. ListIterator可以定位当前的索引位置,nextIndex()和previousIndex()可以实现。Iterator没有此功能。

4. 都可实现删除对象,但是ListIterator可以实现对象的修改,set()方法可以实现。Iierator仅能遍历,不能修改。

因为ListIterator的这些功能,可以实现对LinkedList等List数据结构的操作。其实,数组对象也可以用迭代器来实现。

import java.util.LinkedList;
import java.util.List;
import java.util.ListIterator;
public class TestListIterator
{
 public static void main(String args[])
 {
  TestListIterator tliterator=new TestListIterator();
  List<String> list=new LinkedList<String>();
  tliterator.initial(list);//初始化这个链接表
  ListIterator<String>  li=list.listIterator();//将该链接表转化为ListIterator
  //下面的代码进行ListIterator对象li的各种功能检测
  //顺序输出迭代器中的元素
  while(li.hasNext())
  {System.out.print(li.next().toString()+" ");}
  //验证add方法,给li添加两个元素
  li.add("元素五");
  li.add("元素六");
  System.out.println();//产生换行操作
  //通过使用ListIterator的特有方法hasPrevious与previous实现List的元素
  //逆序输出
  for(String str;li.hasPrevious();)
  {System.out.print(li.previous().toString()+" ");}
  System.out.println();//产生换行操作
  //顺序输出li迭代器中现有的元素
  while(li.hasNext())
  {System.out.print(li.next().toString()+" ");}
  System.out.println();//产生换行操作
  //通过使用ListIterator的set方法来改变li中的元素
  for(String str;li.hasPrevious();)
  {
   str=li.previous().toString();
   li.set(str.replaceAll("元素","元素编号"));
  }
  //顺序输出li迭代器中现有的元素
  while(li.hasNext())
  {System.out.print(li.next().toString()+" ");}
 
 }
 //初始化List方法
 public void initial(List<String> list)
 {
  list.add("元素一");
  list.add("元素二");
  list.add("元素三");
  list.add("元素四");
 }
}
        Iterator模式是用于遍历集合类的标准访问方法。它可以把访问逻辑从不同类型的集合类中抽象出来,从而避免向客户端暴露集合的内部结构。

  例如,如果没有使用Iterator,遍历一个数组的方法是使用索引:
        for(int i=0; i<array.size(); i++) { ... get(i) ... } 
        客户端都必须事先知道集合的内部结构,访问代码和集合本身是紧耦合,无法将访问逻辑从集合类和客户端代码中分离出来,每一种集合对应一种遍历方法,客户端代码无法复用。
  更恐怖的是,如果以后需要把ArrayList更换为LinkedList,则原来的客户端代码必须全部重写。
        为解决以上问题,Iterator模式总是用同一种逻辑来遍历集合:

         for(Iterator it = c.iterater(); it.hasNext(); ) { ... }

  奥秘在于客户端自身不维护遍历集合的"指针",所有的内部状态(如当前元素位置,是否有下一个元素)都由Iterator来维护,而这个Iterator由集合类通过工厂方法生成,因此,它知道如何遍历整个集合。

  客户端从不直接和集合类打交道,它总是控制Iterator,向它发送"向前","向后","取当前元素"的命令,就可以间接遍历整个集合。


如何用Python爬取中国土地市场网2000-2023年土地出让数据(含经纬度) 本文详细介绍了如何使用Python爬取中国土地市场网2000-2023年的土地出让数据(含经纬度),提供了一套高效的技术方案。通过应对动态加载的反爬机制、优化地理编码数据存储和设计异常处理流程,帮助开发者建立自动化数据采集管道。方案已在商业地产分析项目中验证,可稳定采集超过50万条土地交易记录。 阅读详情

相关推荐

echarts如何实现3D饼图(环形图)?

自定义修改3D饼图的宽高和legend

i-cat的博客 1万+

Iterator 和 ListIterator 有什么区别?

Iterator 和 ListIterator 都是 Java 集合框架中的迭代器,其中 Iterator 是普遍适用于所有实现了 Iterable 接口的集合类的通用迭代器,而 ListIterator 则是专门用于遍历 List 集合的迭代器,它比 Iterator 更加强大,而且只适用于 List 集合。2. 支持修改元素的方法不同:Iterator 只支持使用 remove() 方法删除集合中的元素,不支持修改和添加操作;

m0_68464502的博客 767

Ansys Electronics Desktop仿真——HFSS线圈寄生电阻,电感

Ansys Electronics Desktop仿真——HFSS线圈寄生电阻,电感

冲击10w 1万+

迭代器listIterator.set():ListIterator的set方法使用

《java语言程序设计》中对该方法的描述: +set(element : E): void 使用指定的元素替换previous或者next方法返回的最后一个元素 这个描述有点模糊,直接上代码 package com.javaImpove; import java.util.*; public class test13_8 { public static void main(S...

qq_41623154的博客 2691

COLMAP生成MVSNet数据集

COLMAP生成MVSNet数据集

qq_43307074的博客 5636

Apollo学习笔记(4)坐标系

百度Apollo项目用到了多种坐标系,其中帮助文档提及的坐标系包括: 全球地理坐标系(The Global Geographic coordinate system ) 局部坐标系—东-北-天坐标(The Local Frame – East-North-Up,ENU) 车身坐标系—右-前-天坐标(The Vehicle Frame —Right-Forward-Up,RFU) 车身坐标系—前-左-天坐标(The Vehicle Frame —Front-Left-Up,FLU) 还有一种Frenet坐标

qq_24649627的博客 5798

Iterator与ListIterator有什么区别

Iterator与ListIterator区别如下: 1、Iterator是ListIterator的父接口。 2、Iterator是单列集合(Collection)公共取出容器中元素的方式。 对于List,Set都通用。 而ListIterator是List集合的特有取出元素方式。 3、Iterator中具备的功能只有hashNext(),next(),remove(); ListIterato...

小泽 3506

AI开发助手介绍

AI开发助手介绍随着NLP方向发展越来越成熟,AI写代码领域出现了几个非常好的模型,今天笔者给大家推荐几个AI Coding 助手AI Coding助手是以IDEA插件或vim插件形式提供服务,在编辑器中写代码时,可以实时预测下一行要输入的代码,提升开发效率。Github Copilot首先要介绍的是Github Copilot,Copilot是个AI Coding助手,它从注释和代码中提取上下文,给出单行和整个函数的代码建议,Copilot由Open AI 的CodeX模型提供支持,它是一个由OpenAI

bobo_simpler的博客 5765

Iterator 和 ListIterator 的区别

Iterator 和 ListIterator 的区别: 1、Iterator 可遍历 Set 和 List 集合;ListIterator 只能遍历 List。 2、Iterator 只能单向遍历;ListIterator 可双向遍历(向前/后遍历)。 3、ListIterator 继承自Iterator 接口,添加新功能,比如添加一个元素、替换一个元素、获取前面或后面元素的索引位置。 Iterator接口: package java.util; import java.util.fu..

春风化雨 2931

基于TDOA的chan算法(定位算法)

Chan算法原理 TDOA(TDOA,the time differences of arrival,到达时间差),Chan算法是TDOA定位方法的一个很好用的方法。 Chan算法是非递归双曲线方程组解法,具有解析表达式解,主要特点是:在测量误差服从理想高斯分布时,它的定位精度高、计算量小,并且可以通过增加已确定点的数量来提高算法精度。 该算法的推导前提是基于测量误差为零均值高斯随机变量,对于实际环境中误差较大的测量值,比如在有非视距误差的环境下,该算法的性能会有显著下降。二维情况下,可分为只有三个点参与定

优快云不再更新 2万+

.Net如何使用Web API实现数据交互?

数据模型代表了要交互的数据结构。例如,假设我们要创建一个简单的图书管理系统,我们可以定义一个Book类作为数据模型。set;set;set;

Code365 257

Iterator 和 ListIterator 如何使用,有什么区别?

Iterator 和 ListIterator 如何使用,有什么区别?

胡晗靓的Java学习博客 762

uniapp:人脸识别功能,已测试,直接复制源码,支持H5,APP安卓。不依赖任何js,SDK。

uniapp人脸识别功能,已测试可直接复制源码,支持H5,APP安卓。不依赖任何js,SDK。 APP效果图:

sunluyi的博客 2225

Iterator 和 ListIterator 有什么区别

Iterator 和 ListIterator 有什么区别? ListIterator 继承 Iterator ListIterator 比 Iterator多方法 add(E e) 将指定的元素插入列表,插入位置为迭代器当前位置之前 set(E e) 迭代器返回的最后一个元素替换参数e hasPrevious() 迭代器当...

ConstXiong 7671

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Java中Iterator 和ListIterator的区别

1.Iterator Iterator的定义如下: public interface Iterator {} Iterato...

5420

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Iterator和ListIterator的区别

Iterator和ListIterator主要区别有: 一、ListIterator有add()方法,可以向List中添加对象,而Iterator不能。 二、ListIterator和Iterator都有hasNext()和next()方法,可以实现顺序向后遍历。但是ListIterator有hasPrevious()和previous()方法,可以实现逆向(顺序向前)遍历。Iterator就不可...

qq_45557294的博客 238

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Iterator 和 ListIterator 区别

Iterator是 Java 集合框架中最基础的遍历接口,适用于所有实现了Collection接口的集合类。Iterator提供了一种通用的方式来遍历集合中的元素,并提供了删除元素的功能。Iterator接口定义在java.util// 判断集合中是否还有元素E next();// 返回集合中的下一个元素// 从集合中移除当前迭代器指向的元素hasNext():用于判断集合中是否还有未遍历的元素。如果有,则返回true;否则返回false。next()

Flying_Fish_roe的博客 1622

Iterator和ListIterator有什么区别

Iterator 只能单向遍历,而 ListIterator 可以双向遍历(向前/后遍历)。ListIterator 从 Iterator 接口继承,然后添加了一些额外的功能,比如添加一个元素、替换一个元素、获取前面或后面元素的索引位置。总的来说,ListIterator 相比 Iterator 更强大,因为它不仅支持正向遍历,还支持逆向遍历,并且提供了更多的操作方法。然而,ListIterator 只能在 List 集合及其子类中使用,而 Iterator 可以用于任何可迭代的集合。

booker009的博客 450

Iterator,ListIterator的区别

一,什么是迭代器 迭代器是一种Collection 集合遍历的接口,而实现该接口的类被称之为迭代类。 二,ListIterator 源码上ListIterator继承了Iterator,JDK8的源码中这样说道:An iterator for lists that allows the programmer ....,这是一个提供给我们专门遍历List集合的迭代接口。 public interface ListIterator<E> extends Iterator<E>

FYHannnnnn的博客 300

Java中ListIterator和Iterator的区别以及ListIterator的应用

Java中ListIterator和Iterator的区别以及ListIterator的应用Iterator和ListIterator主要区别有:一、ListIterator有add()方法,可以向List中添加对象,而Iterator不能。二、ListIterator和Iterator都有hasNext()和next()方法,可以实现顺序向后遍历。但是ListIterator有hasPreviou

wojiushimogui的博客 2578

Iterator和ListIterator区别是什么

看源码ListIterator继承Iterator:public interface ListIterator extends Iterator 首先看一下Iterator和ListIterator迭代器的方法有哪些。 Iterator迭代器包含的方法有: hasNext():如果迭代器指向位置后面还有元素,则返回 true,否则返回false next():返回集合中Iterator指向位置后面...

Ice Point. 252
上一篇: java迭代器并发修改异常说明
下一篇: 数据流图和数据流程图的区别
FST_XUAN
博客等级 码龄10年 3粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值