全国旗舰校区

不同学习城市 同样授课品质

北京

深圳

上海

广州

郑州

大连

武汉

成都

西安

杭州

青岛

重庆

长沙

哈尔滨

南京

太原

沈阳

合肥

贵阳

济南

下一个校区
就在你家门口
+
当前位置:首页  >  技术干货

Iterator 和 ListIterator 有什么区别?

发布时间:2022-08-01 17:03:52
发布人:qyf

  1. ListIterator 继承 Iterator

  2. ListIterator 比 Iterator的方法多

  add(E e) 将指定的元素插入列表,插入位置为迭代器当前位置之前

  set(E e) 迭代器返回的最后一个元素替换参数e

  hasPrevious() 迭代器当前位置,反向遍历集合是否含有元素

  previous() 迭代器当前位置,反向遍历集合,下一个元素

  previousIndex() 迭代器当前位置,反向遍历集合,返回下一个元素的下标

  nextIndex() 迭代器当前位置,返回下一个元素的下标

  3. 使用范围不同,Iterator可以迭代所有集合;ListIterator 只能用于List及其子类

  ListIterator 有 add 方法,可以向 List 中添加对象;Iterator 不能

  ListIterator 有 hasPrevious() 和 previous() 方法,可以实现逆向遍历;Iterator不可以

  ListIterator 有 nextIndex() 和previousIndex() 方法,可定位当前索引的位置;Iterator不可以

  ListIterator 有 set()方法,可以实现对 List 的修改;Iterator 仅能遍历,不能修改。

  怎么确保一个集合不能被修改?

  我们很容易想到用final关键字进行修饰,我们都知道final关键字可以修饰类,方法,成员变量,final修饰的类不能被继承,final修饰的方法不能被重写,final修饰的成员变量必须初始化值,如果这个成员变量是基本数据类型,表示这个变量的值是不可改变的,如果说这个成员变量是引用类型,则表示这个引用的地址值是不能改变的,但是这个引用所指向的对象里面的内容还是可以改变的。

  那么,我们怎么确保一个集合不能被修改?首先我们要清楚,集合(map,set,list…)都是引用类型,所以我们如果用final修饰的话,集合里面的内容还是可以修改的。

  我们可以做一个实验,我们用final关键字定义了一个map集合,这时候我们往集合里面传值,第一个键值对1,1;我们再修改后,可以把键为1的值改为100,说明我们是可以修改map集合的值的。

  那我们应该怎么做才能确保集合不被修改呢?

  我们可以采用Collections包下的unmodifiableMap方法,通过这个方法返回的map,是不可以修改的。它会报 java.lang.UnsupportedOperationException异常。

  同理:Collections包也提供了对list和set集合的方法。

  Collections.unmodifiableList(List)

  Collections.unmodifiableSet(Set)

QQ截图20220801153554

  更多关于“Java培训”的问题,欢迎咨询千锋教育在线名师。千锋已有十余年的培训经验,课程大纲更科学更专业,有针对零基础的就业班,有针对想提升技术的好程序员班,高品质课程助力你实现java程序员梦想。

相关文章

OKR与自驱力的关系是什么?

OKR与自驱力的关系是什么?

2023-10-14
office是什么软件类型?

office是什么软件类型?

2023-10-14
Cloud-IDE 是什么?

Cloud-IDE 是什么?

2023-10-14
主机和端系统之间有什么不同?

主机和端系统之间有什么不同?

2023-10-14

最新文章

常见网络安全面试题:Windows常用的命令有哪些?

常见网络安全面试题:Windows常用的命令有哪些?

2023-10-09
常见网络安全面试题:根据设备告警如何展开排查?

常见网络安全面试题:根据设备告警如何展开排查?

2023-10-09
常见网络安全面试题:mysql加固呢?(数据库加固)

常见网络安全面试题:mysql加固呢?(数据库加固)

2023-10-09
常见网络安全面试题:windows和linux加固?(操作系统加固)

常见网络安全面试题:windows和linux加固?(操作系统加固)

2023-10-09
在线咨询 免费试学 教程领取