`

java Iterator 和 ListIterator 的不同使用方法

    博客分类:
  • java
阅读更多
我们在使用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 的方法:


Method Summary
 void	add(Object o) 
          Inserts the specified element into the list (optional operation).
 boolean	hasNext() 
          Returns true if this list iterator has more elements when traversing the list in the forward direction.
 boolean	hasPrevious() 
          Returns true if this list iterator has more elements when traversing the list in the reverse direction.
 Object	next() 
          Returns the next element in the list.
 int	nextIndex() 
          Returns the index of the element that would be returned by a subsequent call to next.
 Object	previous() 
          Returns the previous element in the list.
 int	previousIndex() 
          Returns the index of the element that would be returned by a subsequent call to previous.
 void	remove() 
          Removes from the list the last element that was returned by next or previous (optional operation).
 void	set(Object o) 
          Replaces the last element returned by next or previous with the specified element (optional operation).
分享到:
评论
1 楼 蜀山红日 2012-11-01  

相关推荐

    java中Iterator和ListIterator实例详解

    主要介绍了java中Iterator和ListIterator实例详解,具有一定借鉴价值,需要的朋友可以参考下。

    java 1. 泛型 2. 队列 3. 栈 4. Iterator 和 ListIterator迭代器

    java 1. 泛型 2. 队列 3. 栈 4. Iterator 和 ListIterator迭代器

    java Iterator接口和LIstIterator接口分析

    主要介绍了java Iterator接口和LIstIterator接口分析的相关资料,需要的朋友可以参考下

    JAVA中ListIterator和Iterator详解与辨析(推荐)

    主要介绍了JAVA中ListIterator和Iterator详解与辨析,需要的朋友可以参考下

    Java系列Iterator

    Java Iterator(迭代器)不是一个集合,它是一种用于访问集合的方法,可用于迭代 ArrayList 和 HashSet 等集合。 Iterator 是 Java 迭代器最简单的实现,ListIterator 是 Collection API 中的接口, 它扩展了 ...

    Java 最常见的 208 道面试题:第二模块答案

    Java 最常见的 208 道面试题:第二模块答案 18. java 容器都有哪些? 19. Collection 和 Collections 有什么区别? 20. List、 Set、 Map 之间的区别是什么?...33. Iterator 和 ListIterator 有什么区别?

    Java Iterator(迭代器)

    Java Iterator(迭代器)不是一个集合,它是一种用于访问集合的方法,可用于迭代 ArrayList 和 HashSet 等集合。 Iterator 是 Java 迭代器最简单的实现,ListIterator 是 Collection API 中的接口, 它扩展了 ...

    Java期末复习-类集框架

    Java类集框架 最大单值操作父接口Collection及其子接口、子类: List接口、ArrayList类、...Iterator、ListIterator、foreach、废除的Enumeration Collections工具类 Comparable接口、equals()方法、hashCode()方法

    java使用listIterator逆序arraylist示例分享

    对于列表而言,除了Iterator,还提供了一个功能更加强大的ListIterator。它可以实现逆序遍历列表中的元素。本示例将使用其逆序遍历ArrayList

    Java 基础核心总结 +经典算法大全.rar

    属性和方法 构造方法 方法重载 方法的重写 初始化 类的初始化 成员初始化 构造器初始化初始化顺序 数组初始化 对象的销毁 对象作用域 this 和 super 访问控制权限继承 多态组合代理 向上转型static final 接口和...

    think in java线程和容器2

    java线程中容器使用技术,比如List接口是在Collection的基础上添加了大量方法,有两种...为了遍历,JAVA定义了迭代器Iterator,它只能向后遍历,它有一个子类ListIterator,它只适用于List类的访问,它还可以双向移动。

    Java集合面试题.docx

    1. Java 集合框架是什么?说出一些集合框架的优点? 2. 集合框架中的泛型有什么优点? 3. Java 集合框架的基础接口有哪些? ...为何 Collection 不从 ...10. Iterater 和 ListIterator 之间有什么区别? .... ... ...

    疯狂JAVA讲义

    7.4.1 List接口和ListIterator接口 261 7.4.2 ArrayList和Vector实现类 264 7.4.3 固定长度的List 266 7.5 Queue接口 266 7.5.1 LinkedList实现类 266 7.5.2 PriorityQueue实现类 269 7.6 Map 270 7.6.1 ...

    JDKAPI18CN(中文版)

    The iterators returned by this class's个 iterator和listIterator方法是快速失败的 :如果列表在任何时间从结构上修改创建迭代器之后,以任何方式除非通过迭代器自身remove种或add方法,迭代器都将抛出一个...

    java容器大全(java基础篇)

    本文目录java容器介绍泛型的简单介绍Comparable和ComparatorCollectionListArrayListLinkedListVectorSetHashSetLinkedHashSet+ComparableTreeSetQueueLinkedListArrayQueuePriorityQueueStackMapHashMapTreeMap容器...

    Java常见面试题208道.docx

    33.Iterator 和 ListIterator 有什么区别? 34.怎么确保一个集合不能被修改? 三、多线程 35.并行和并发有什么区别? 36.线程和进程的区别? 37.守护线程是什么? 38.创建线程有哪几种方式? 39.说一下 runnable 和 ...

    史上最全java面试,103项重点知识,带目录

    33. Iterator 和 ListIterator 有什么区别? 13 三、多线程 13 35. 并行和并发有什么区别? 13 36. 线程和进程的区别? 14 37. 守护线程是什么? 14 38. 创建线程有哪几种方式? 14 39. 说一下 runnable 和 callable...

    Java集合容器面试题(2020最新版)

    文章目录集合容器概述什么是集合集合的特点集合和数组的区别使用集合框架的好处常用的集合类有哪些?List,Set,Map三者的区别?List、Set、Map 是否继承自 Collection 接口?...Iterator 和 ListIterator 有什么区别?

    Java for-each循环使用难题2例(高级使用方法)

    从Java5起,在Java中有了for-each循环,可以用来循环遍历collection和...For each循环允许你在无需保持传统for循环中的索引,或在使用iterator /ListIterator时无需调用while循环中的hasNext()方法就能遍历collection

    Java开发详解.zip

    031308_【第13章:Java类集】_ListIterator接口笔记.pdf 031309_【第13章:Java类集】_foreach及Enumeration接口笔记.pdf 031310_【第13章:Java类集】_Map接口笔记.pdf 031311_【第13章:Java类集】_Map接口使用的...

Global site tag (gtag.js) - Google Analytics