首页 > 试题广场 >

Iterator和ListIterator的区别是什么?

[问答题]
Iterator和ListIterator的区别是什么?

答: Iterator 可用来遍历 Set List 集合,但是 ListIterator 只能用来遍历 List

Iterator 对集合只能是前向遍历, ListIterator 既可以前向也可以后向。

ListIterator 实现了 Iterator 接口,并包含其他的功能,比如:增加元素,替换元素,获取前一个和后一个元素的索引,等等。

(1)  Iterator  

boolean hasNext()

E next()

void remove()

(2)  ListIterator

       void add(E e) 

指定的元素插入列表(可选操作)。该元素直接插入到 next 返回的下一个元素的前面(如果有),或者 previous 返回的下一个元素之后(如果有);如果列表没有元素,那么新元素就成为列表中的唯一元素。新元素被插入到隐式光标前:不影响对 next 的后续调用,并且对 previous 的后续调用会返回此新元素(此调用把调用 nextIndex previousIndex 所返回的值增加 1

boolean hasNext()

boolean hasPrevious() 如果以逆向遍历列表,列表迭代器有多个元素,则返回 true

E next()

int nextIndex()   返回对 next 的后续调用所返回元素的索引。

E previous()

int prevoiusIndex()    返回对 previous 的后续调用所返回元素的索引

void remove()

void set(E e)

remove() set(Object) 方法不是 根据光标位置定义的;它们是根据对调用 next() previous() 所返回的最后一个元素的操作定义的。如: String str=(String)it.next();it.remove();

发表于 2017-02-08 23:08:11 回复(2)
我们在使用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数据结构的操作。 
其实,数组对象也可以用迭代器来实现。 org.apache.commons.collections.iterators.ArrayIterator就可以实现此功能。 
一般情况下,我们使用Iterator就可以了,如果你需要进行记录的前后反复检索的话,你就可以使用ListIterator来扩展你的功能,(有点象JDBC中的滚动结果集)。 
ListIterator是一个双向迭代器。ListIterator没有当前元素,它的当前游标是位于调用next()和previsous()返回的元素之间。不过下面举的例子有点问题:下面的例子是n+1个元素。如果有n个元素,那么游标索引就是0...n共n+1个。 
注意:romove和set方法不是针对当前游标的操作,而是针对最后一次的next()或者previous()调用
发表于 2018-01-04 10:42:54 回复(1)
下面列出了他们的区别:
Iterator可用来遍历Set和List集合,但是ListIterator只能用来遍历List。
Iterator对集合只能是前向遍历,ListIterator既可以前向也可以后向。
ListIterator实现了Iterator接口,并包含其他的功能,比如:增加元素,替换元素,获取前一个和后一个元素的索引,等等。
发表于 2015-10-29 12:10:41 回复(2)
Iterator能遍历List或Set,ListIterator只能遍历List。
Iterotor对象可以调用三个方法:
1.hasNext()用来判断序列中接下来还有没有元素
2.next()用来得到下一个元素,如果是第一次调用,返回的是第一个元素
3.remove()用来移除当前遍历到的元素

ListIterator的接口是Iterator,除了有这三个方法,还增加了一些别的功能:
1.add()用来添加元素
2.set()用来替换元素
3.hasPrevious()用来判断有没有前一个元素
4.previous()得到前一个元素
5.nextIndex()得到下一个元素的索引
6.previousIndex()得到前一个元素的索引

所以,通过这些方法也可以看出,Iterator的遍历是单向的,只能向前遍历;ListIterator的遍历可以是双向的,可以向前或向后遍历。
编辑于 2020-07-06 14:48:55 回复(0)

iterator可以遍历set和list集合,只可以向前遍历

listiterator 只可以遍历list集合,并且可以向前向后遍历

发表于 2020-03-04 10:56:12 回复(0)

下面列出了他们的区别:
1)Iterator可用来遍历Set和List集合,但是ListIterator只能用来遍历List。
2)Iterator对集合只能是前向遍历,ListIterator既可以前向也可以后向。
3)ListIterator实现了Iterator接口,并包含其他的功能,比如:增加元素,替换元素,获取前一个和后一个元素的索引,等等。
发表于 2019-06-21 09:35:37 回复(0)
两个都是集合的迭代器。Iterator使用范围是集合,ListIterator的使用范围是List接口。
而且ListIterator是继承于Iterator的接口:
public interface ListIterator<E> extends Iterator<E> {}
两者功能来说:Iterator:①.是否存在下一个元素;②.获取下一个元素;③.删除当前元素。
ListIterator因为是继承Iterator接口所以拥有Iterator接口的全部功能外还有获取上一个元素的能力等:①.是否存在上一个元素;②.获取上一个元素。

编辑于 2019-02-27 11:05:03 回复(0)
下面列出了他们的区别: Iterator可用来遍历Set和List集合,但是ListIterator只能用来遍历List。 Iterator对集合只能是前向遍历,ListIterator既可以前向也可以后向。 ListIterator实现了Iterator接口,并包含其他的功能,比如:增加元素,替换元素,获取前一个和后一个元素的索引,等等。
发表于 2016-03-07 21:25:01 回复(0)
发表于 2016-08-08 14:15:41 回复(19)

<p>iterator可以遍历list和set,listiterator只能遍历list。listiterator不仅能向前还能向后遍历。listiterator实现了iterator接口</p>

编辑于 2020-12-08 18:09:37 回复(0)
1.iterator可以遍历list于set集合,map集合不能用iterator直接遍历,因为map没有实现iterator接口,只有collection集合才实现了iterator接口,必须先要调用keyset()方法后才能遍历,都是Listiterator只能遍历list集合
2.Listiteraor实现了iterator接口,拥有iterator的方法,并且还有自己新的方法
3.iterator只能是单向遍历,Listiterator即能单向也能双向

编辑于 2020-09-01 15:09:45 回复(0)
lterator和Listlterator都可用来遍历Set和List集合,Listlterator只可遍历List集合。 lterator只能向前遍历,Listlterator可以向前,也可以向后,Listlterator实现了lterator接口,并添加了增加,替换,前一个,后一个等操作。
编辑于 2020-08-31 04:40:06 回复(0)
Iterator能遍历List或Set,ListIterator只能遍历List。
Iterotor对象可以调用三个方法:
1.hasNext()用来判断序列中接下来还有没有元素
2.next()用来得到下一个元素,如果是第一次调用,返回的是第一个元素
3.remove()用来移除当前遍历到的元素
ListIterator的接口是Iterator,除了有这三个方法,还增加了一些别的功能:
1.add()用来添加元素
2.set()用来替换元素
3.hasPrevious()用来判断有没有前一个元素
4.previous()得到前一个元素
5.nextIndex()得到下一个元素的索引
6.previousIndex()得到前一个元素的索引

所以,通过这些方法也可以看出,Iterator的遍历是单向的,只能向前遍历;ListIterator的遍历可以是双向的,可以向前或向后遍历。
发表于 2020-07-22 07:58:28 回复(0)
1)Iterator可用来遍历Set和List集合,但是ListIterator只能用来遍历List。
2)Iterator对集合只能是前向遍历,ListIterator既可以前向也可以后向。
3)ListIterator实现了Iterator接口,并包含其他的功能,比如:增加元素,替换元素,获取前一个和后一个元素的索引,等等。
发表于 2020-07-15 15:09:24 回复(0)
<p>迭代器可以遍历set 和list 后者只遍历list</p><p>前者不允许前向遍历,后者可以前向和反向遍历</p>
发表于 2020-07-07 15:46:42 回复(0)
<p>Iterator可以用来遍历list和set集合</p><p>ListIterator只能用来遍历list集合</p><p>Iterator只能前向遍历,ListIterator可以前向后向遍历</p><p>ListIterator继承于Iterator接口,还有很多其他功能</p>
发表于 2020-05-28 20:42:07 回复(0)
<p>iterator的子类是listiterator,iterator有hasnext(),next(),remove(),listiterater对象能双向遍历对象,能插入和删除元素</p>
发表于 2020-05-04 05:22:27 回复(0)

Iterator迭代器可以遍历list和set对象,只能单向遍历也就是向后移动,只有三个方法,hasNext,next,remove,但listIterator只能迭代list,可以向前向后遍历,继承于iterator接口,除了拥有iterator的三个方法,增加元素,替换元素,获取前一个元素,和后一个元素

编辑于 2020-03-30 23:38:20 回复(0)

iterator可以遍历set和list,而listiterator只能是list。iterator只能向前遍历,而listiterator可以双向遍历。listiterator可以实现更多功能。


发表于 2020-02-27 21:03:39 回复(0)

iterator可以遍历set list

listiterator只能遍历list 但可以向前或者向后获取

实现了iterator接口 增加了一些功能

编辑于 2019-12-31 10:17:56 回复(0)