千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  技术干货  > Iterator 和 ListIterator 有什么区别?

Iterator 和 ListIterator 有什么区别?

来源:千锋教育
发布人:qyf
时间: 2022-08-01 17:03:52 1659344632

  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程序员梦想。

tags:
声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT