在上一篇中
http://gaofulai1988.iteye.com/blog/2261505介绍了ArrayList iterator的实现,今天再分析另外一个list中特有的迭代器ListIterator。
看看它是如何new的呢。
public ListIterator<E> listIterator() {
return new ListItr(0);
}
public ListIterator<E> listIterator(int index) {
if (index < 0 || index > size)
throw new IndexOutOfBoundsException("Index: "+index);
return new ListItr(index);
}
又出现了一个内部类,看看它是怎样实现的。
private class ListItr extends Itr implements ListIterator<E> {
ListItr(int index) {
super();
cursor = index;
}
public boolean hasPrevious() {
return cursor != 0;
}
public int nextIndex() {
return cursor;
}
public int previousIndex() {
return cursor - 1;
}
@SuppressWarnings("unchecked")
public E previous() {
checkForComodification();
int i = cursor - 1;
if (i < 0)
throw new NoSuchElementException();
Object[] elementData = ArrayList.this.elementData;
if (i >= elementData.length)
throw new ConcurrentModificationException();
cursor = i;
return (E) elementData[lastRet = i];
}
public void set(E e) {
if (lastRet < 0)
throw new IllegalStateException();
checkForComodification();
try {
ArrayList.this.set(lastRet, e);
} catch (IndexOutOfBoundsException ex) {
throw new ConcurrentModificationException();
}
}
public void add(E e) {
checkForComodification();
try {
int i = cursor;
ArrayList.this.add(i, e);
cursor = i + 1;
lastRet = -1;
expectedModCount = modCount;
} catch (IndexOutOfBoundsException ex) {
throw new ConcurrentModificationException();
}
}
}
总体的代码不难看懂。现在总结一下,它们之间的区别。
1. iterator只能向后遍历,而ListIterator可以向前,也可以向后。
2. ListIterator可以增加元素,但iterator没有。
分享到:
相关推荐
JAVA中ListIterator和Iterator详解与辨析 ListIterator和Iterator是JAVA集合中两个重要的迭代器,都是用于遍历集合中的元素的。但是它们之间存在着一些关键的区别。 首先,Iterator迭代器包含的方法有:hasNext()...
Java 中 Iterator 和 ListIterator 实例详解 Iterator 和 ListIterator 是 Java 中两个重要的迭代器接口,用于遍历集合中的元素。下面我们将详细介绍这两个接口的作用范围、关系、方法和使用实例。 Iterator 和 ...
与普通的`Iterator`相比,`ListIterator`支持双向遍历,即不仅可以向前迭代,也可以向后迭代。此外,`ListIterator`还提供了额外的方法,如`add()`,允许在迭代过程中向列表中添加新元素。 以下是一个使用`...
Java Iterator接口和ListIterator接口分析 Java Iterator接口和ListIterator接口是Java集合框架中的两个重要接口,分别用于迭代集合中的元素和列表中的元素。在本文中,我们将详细介绍Java Iterator接口和...
在Java编程中,`ListIterator`是`List`接口提供的一种特殊的迭代器,它具有双向遍历的能力,不仅可以向前遍历列表,还可以向后遍历。`ListIterator`还提供了在遍历过程中添加、修改和删除元素的功能,使得对列表的...
6. **`ListIterator`与`Iterator`的区别** `ListIterator`是`Iterator`的一个子接口,专门为`List`类型的集合提供服务。除了`Iterator`的方法,`ListIterator`还提供了`hasPrevious()`、`previous()`、`nextIndex()...
"Iterator接口" Iterator接口是Java编程语言中的一种...Iterator接口和ListIterator接口是Java编程语言中非常重要的接口,提供了一个通用的方式来遍历集合中的元素,并且可以控制迭代器的行为,广泛应用于实际项目中。
在Java编程中,`ListIterator` 是一个比普通 `Iterator` 更加强大的迭代器,它专用于列表接口的实现类,如 `ArrayList`、`LinkedList` 等。`ListIterator` 提供了更多的操作方法,使得我们可以方便地在列表中进行前...
java 1. 泛型 2. 队列 3. 栈 4. Iterator 和 ListIterator迭代器
Java 迭代器(Iterator)是Java集合框架的核心部分,它提供了一种高效且方便的方式来遍历和操作集合中的元素,而无需关心底层数据结构的实现细节。在Java中,迭代器是一个接口,位于`java.util`包下,主要用于遍历...
对于需要双向遍历或在List中进行插入和删除操作的情况,Java提供了`ListIterator`接口,它是`Iterator`的子接口。`ListIterator`提供了`hasPrevious()`、`previous()`、`add()`和`set()`等额外的方法,增强了对List...
`ListIterator`与`Iterator` 对于列表(List)类型的集合,Java还提供了`ListIterator`接口,它扩展了`Iterator`,支持双向遍历、添加元素以及获取当前位置等额外功能: ```java ListIterator<String> ...
`Iterator`是Java集合框架中的一个重要组成部分,它提供了一种遍历集合元素的方法。通过本文的学习,读者将能够更好地理解和掌握`Iterator`的用法。 #### 一、基本概念与使用方法 ##### 1. `Iterator`接口简介 `...
Iterator 与 ListIterator 有什么区别 Iterator 只能正向遍历集合,适用于获取移除元素,而 ListIterator 继承 Iterator,可以双向列表的遍历,同样支持元素的修改。 什么叫做快速失败特性 快速失败是一个系统或...
除了基础的`Iterator`接口,Java还提供了一个更强大的`ListIterator`接口,它扩展自`Iterator`,并添加了一些特定于列表的操作,如`add(E e)`(在当前位置插入元素),`previous()`(返回上一个元素),以及`...
Iterator接口有两个常用的实现类:Iterator和ListIterator。Iterator接口用于访问集合中的元素,而ListIterator接口用于访问List集合中的元素。 Properties类是Java集合类中的一种特殊类,以键值对的形式存储数据,...
ListIterator与Iterator的区别 - **ListIterator**仅适用于`List`,提供了额外的方法如`add`、`set`等,支持双向遍历和索引操作。 - **Iterator**则适用于所有实现了`Iterable`接口的集合,包括`Set`和`List`。 ...
- Iterator和ListIterator迭代器的使用 - 泛型:类型参数化和通配符 6. **第六章(ch6):异常处理** - 异常的概念与分类:检查异常和运行时异常 - try-catch-finally语句块 - throws关键字:声明异常 - ...
ListIterator<类型> iterator = list.listIterator(); while (iterator.hasNext()) { int index = iterator.nextIndex(); 类型 item = iterator.next(); // 在这里处理item和index } ``` 虽然这些方法稍微复杂...
ListIterator是Iterator的子接口,专用于List接口,它提供了向前和向后遍历列表以及在迭代时添加元素的能力。由于ListIterator需要保证元素的顺序,因此它提供了add方法,而普通的Iterator通常不提供此功能,以保持...