java中Iterator与ListIterator以及其两者的区别
Iterator主要方法
hasNext():如果迭代器中还有元素,则返回true。
next():返回迭代器中的下一个元素
remove():删除迭代器新返回的元素。
需要注意的是:
(1)Iterator只能单向移动。
(2)Iterator.remove()是唯一安全的方式来在迭代过程中修改集合;如果在迭代过程中以任何其它的方式修改了基本集合将会产生未知的行为。而且每调用一次next()方法,remove()方法只能被调用一次,如果违反这个规则将抛出一个异常。
ListIterator
ListIterator是一个功能更加强大的, 它继承于Iterator接口,只能用于各种List类型的访问。可以通过调用listIterator()方法产生一个指向List开始处的ListIterator, 还可以调用listIterator(n)方法创建一个一开始就指向列表索引为n的元素处的ListIterator。
主要的方法有:add、hasNext、hasprevious、next、nextIndex、previous、remove、set等。根据源码中的定义,我们可以得出ListIterator可以
- (1)双向移动(向前/向后遍历).
- (2)产生相对于迭代器在列表中指向的当前位置的前一个和后一个元素的索引.
- (3)可以使用set()方法替换它访问过的最后一个元素.
- (4)可以使用add()方法在next()方法返回的元素之前或previous()方法返回的元素之后插入一个元素.
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仅能遍历,不能修改。
评论区
请写下您的评论...
猜你喜欢
weblog
4673
int和Integer的区别
说起int和Integer的区别大家耳熟能详的是:
int是java中的基本数据类型,而Integer是引用类型。
Integer必须实例化后才能使用,而
算法基础
1878
Java中遍历集合的方式以list集合为例,有三种遍历方式。ListStringlist=newArrayList();
list.add("2");
list.add("2");
list.add
算法基础
1315
1.InnoDB支持事务,MyISAM不支持事务2.InnoDB支持外键,而MyISAM不支持。对一个包含外键的InnoDB表转为MYISAM会失败3.InnoDB是聚集索引,使用B+Tree作为索
blog
Java内存区域与内存溢出异常
java基础
3751
局结构,在Java语言里就显得有些粗糙了,实际的内存区域划分要比这更复杂。不过这种划分方式的流行也间接说明了程序员最关注的、与对象内存分配关系最密切的区域是“堆”和“栈”两块。其中,“堆”在稍后笔者会
blog
for in 和 for of 的区别
javascript,前端
1143
jsjavascriptforin和forof的区别,forof遍历的原理
一、区别
forin是ES5的语法,forof是ES6的语法forin是无序遍历数组或对象的,也就是随机遍历,不按照顺序来
weblog
4120
String类的实现及其不可变性
对于String类的实现从源码中可以看出,String类的底层维护着一个final修饰的char数组,用来储存字符。并且除了hash这个属性其它属性都声明为
linux系统
3897
务并没有结束,他仍然在进程中他只是维持挂起的状态,用户可以使用fg/bg操作继续前台或后台的任务,fg命令重新启动前台被中断的任务,bg命令把被中断的任务放在后台执行。使用jobs命令查看当前有多少在后
blog
v-if和v-show的区别
vue
861
true时,都会占据页面的位置
二、v-show与v-if的区别
控制手段不同编译过程不同编译条件不同
控制手段:v-show隐藏则是为该元素添加css—display:none,dom元素依旧还在。v-
最新发表
归档
2018-11
12
2018-12
33
2019-01
28
2019-02
28
2019-03
32
2019-04
27
2019-05
33
2019-06
6
2019-07
12
2019-08
12
2019-09
21
2019-10
8
2019-11
15
2019-12
25
2020-01
9
2020-02
5
2020-03
16
2020-04
4
2020-06
1
2020-07
7
2020-08
13
2020-09
9
2020-10
5
2020-12
3
2021-01
1
2021-02
5
2021-03
7
2021-04
4
2021-05
4
2021-06
1
2021-07
7
2021-08
2
2021-09
8
2021-10
9
2021-11
16
2021-12
14
2022-01
7
2022-05
1
2022-08
3
2022-09
2
2022-10
2
2022-12
5
2023-01
3
2023-02
1
2023-03
4
2023-04
2
2023-06
3
2023-07
4
2023-08
1
2023-10
1
2024-02
1
2024-03
1
2024-04
1
2024-08
1
标签
算法基础
linux
前端
c++
数据结构
框架
数据库
计算机基础
储备知识
java基础
ASM
其他
深入理解java虚拟机
nginx
git
消息中间件
搜索
maven
redis
docker
dubbo
vue
导入导出
软件使用
idea插件
协议
无聊的知识
jenkins
springboot
mqtt协议
keepalived
minio
mysql
ensp
网络基础
xxl-job
rabbitmq
haproxy
srs
音视频
webrtc
javascript
加密算法
目录
没有一个冬天不可逾越,没有一个春天不会来临。最慢的步伐不是跬步,而是徘徊,最快的脚步不是冲刺,而是坚持。