ListIterator接口分析

原创 2007年10月10日 14:53:00

ListIterator是List迭代器,该接口继承Iterator,有关Iterator接口请看:
http://blog.csdn.net/treeroot/archive/2004/09/11/101589.aspx

这里列出所有的方法(包括在Iterator中的方法,Java源码中也常常这么做,虽然不是
必须呢,但是看起来确实比较方便).

public interface ListIterator extends Iterator

1.boolean hasNext()
从父接口继承

2. boolean next()
从父接口继承

3.boolean hasPrevious()
很容易理解,前面是否还有元素

4.Object previous()
返回前一个元素(next()返回的前一个)

5.int nextIndex()
下一个元素的索引号

6.int previousIndex()
上一个元素的索引号

7.void remove()
从父接口继承,和Iterator有点区别,因为可以是next()或者
previous()返回的元素,其他都一样

8.void set(Object o)
替换最后一次调用next()或者previous()的元素.

9.void add(Object o)
添加一个元素(在next()返回的元素之前,previous()返回的元素之后)


为了说明问题,这里把JDK中的部分注释摘抄如下
/**
*
* An iterator for lists that allows the programmer
* to traverse the list in either direction, modify
* the list during iteration, and obtain the iterator's
* current position in the list. A ListIterator
* has no current element; its cursor position always
* lies between the element that would be returned by a call
* to previous() and the element that would be
* returned by a call to next(). In a list of
* length n, there are n+1 valid
* index values, from 0 to n, inclusive.
*

*
*                     Element(0) Element(1) Element(2) ... Element(n)
*                 ^             ^          ^           ^             ^
* Index:      0             1          2           3             n+1
*
*
*
* Note that the {@link #remove} and {@link #set(Object)} methods are
* not defined in terms of the cursor position; they are defined to
* operate on the last element returned by a call to {@link #next} or {@link
* #previous()}.
*/

大致意思是:ListIterator是一个双向迭代器。ListIterator没有当前元素,它的当前游标是位于
调用next()和previsous()返回的元素之间。不过下面举的例子有点问题:下面的例子是n+1个元素。
如果有n个元素,那么游标索引就是0...n共n+1个。
注意:romove和set方法不是针对当前游标的操作,而是针对最后一次的next()或者previous()调用。

因为只是一个接口就不举例说明了。

 

ListIterator接口 源代码

ListIterator接口源代码分析
  • u011642663
  • u011642663
  • 2015年11月02日 09:37
  • 525

Java 集合源码解析(2):ListIterator

ListIterator根据官方文档介绍, ListIterator 有以下功能: 允许我们向前、向后两个方向遍历 List; 在遍历时修改 List 的元素; 遍历时获取迭代器当前游标所在位置。 注...
  • u011240877
  • u011240877
  • 2016年10月07日 22:57
  • 4051

Iterator和ListIterator的作用和区别

Iterator和ListIterator主要区别有: 一、ListIterator有add()方法,可以向List中添加对象,而Iterator不能。 二、ListIterator和It...
  • u012289441
  • u012289441
  • 2014年08月25日 21:36
  • 1147

JAVA基础---集合(三)--List

1.3 List 1.3.1 概述 List的最大的特点就是能够自动的根据插入的数据量来动态改变容器的大小。下面先看看List接口的一些常用方法。 1.3.2 ...
  • wolf_love666
  • wolf_love666
  • 2016年09月21日 12:48
  • 292

有关ListIterator接口的add与remove方法探究

ListIterator接口继承自Iterator接口,新增了add()方法。关于ListIterator的add()以及remove()方法的作用,《java核心技术 卷I》里如下表述可能有点歧义,...
  • goodbaby728
  • goodbaby728
  • 2013年08月21日 22:11
  • 1351

Java类集框架——Iterator和ListIterator 迭代器的使用(遍历集合)

学习目标: 掌握集合输出的标准操作。 掌握Iterator接口的主要作用及使用注意事项。 掌握ListIterator与Iterator接口的关系及区别。 掌握ListIterator接口的使用限制。...
  • u013087513
  • u013087513
  • 2016年08月18日 17:42
  • 2435

listIterator反向遍历学习笔记

ListIterator接口有两个方法,可以用来反向遍历链表E previous() bollean hasPrevious()import java.util.ArrayList; import j...
  • u014322541
  • u014322541
  • 2015年05月11日 23:06
  • 331

电商平台学习笔记(八)——面向接口编程案例分析

情景: 在实际的项目的开发阶段,我们一般使用的都是本地的Session,即把本机当做服务器,做的是单机测试!但是到了项目的发布阶段时,用的就是远程Session了。或者说,这时候,就需要把原来的Ses...
  • renshengkudaun
  • renshengkudaun
  • 2016年04月03日 21:33
  • 241

NBA赛事接口调用

第一步:找别人提供的接口,比如在这里我选择的是聚合数据提供的接口https://www.juhe.cn/docs/api/id/92 第二步:要申请相应的AppKey方可使用,此参数会作为接口的参数...
  • smile_caijx
  • smile_caijx
  • 2017年11月20日 00:08
  • 141

javaAPI深入理解(2)Collection,List的设计,ListIterator与Iterator,RandomAccess,List排序、逆序以及其他

我们看一下RandomAccess接口的声明 之前我们知道List通过Collection继承了Iterable接口 public interface Collection extends Ite...
  • kkgbn
  • kkgbn
  • 2017年05月09日 15:10
  • 554
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ListIterator接口分析
举报原因:
原因补充:

(最多只允许输入30个字)