`

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

分享到:
评论

相关推荐

    java中Iterator和ListIterator实例详解

    Java 中 Iterator 和 ListIterator 实例详解 Iterator 和 ListIterator 是 Java 中两个重要的迭代器接口,用于遍历集合中的元素。下面我们将详细介绍这两个接口的作用范围、关系、方法和使用实例。 Iterator 和 ...

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

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

    Java学习之Iterator(迭代器)的一般用法

    总之,Iterator作为Java中处理集合数据的核心工具之一,掌握其基本用法和进阶特性,对于提高代码质量和编程效率具有不可忽视的作用。无论是基础的遍历操作,还是高级的双向迭代和元素操作,Iterator都提供了强大的...

    java Iterator接口和LIstIterator接口分析

    在本文中,我们将详细介绍Java Iterator接口和ListIterator接口的定义、方法、实现和应用场景。 Iterator接口 Iterator接口是Java集合框架中的一个基本接口,用于迭代集合中的元素。它取代了Java集合框架中的...

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

    JAVA中ListIterator和Iterator详解与辨析 ListIterator和Iterator是JAVA集合中两个重要的迭代器,都是用于遍历集合中的元素的。但是它们之间存在着一些关键的区别。 首先,Iterator迭代器包含的方法有:hasNext()...

    java Iterator迭代器的使用

    熟练掌握`Iterator`的使用,能够提高代码的灵活性和可读性,是每个Java开发者必备的技能之一。 8. **图片资源:Java.jpg** 可能这个图片文件是用来辅助理解`Iterator`概念的,比如它可能包含了一个迭代过程的流程...

    Iterator接口

    Iterator接口和ListIterator接口的使用可以带来很多便利,例如,使用Iterator接口可以遍历集合中的元素,而不管集合的具体实现类型,同时也可以使用ListIterator接口来控制迭代器的行为,例如,添加或删除元素。...

    java使用ListIterator对List遍历时添加修改删除​

    要获取`List`的`ListIterator`实例,可以使用`list.listIterator()`或`list.iterator()`方法。例如: ```java List<String> list = new ArrayList(); ListIterator<String> iterator = list.listIterator(); ``` #...

    java使用listIterator逆序arraylist示例分享

    在标题和描述中提到的示例中,我们将学习如何使用 `ListIterator` 来逆序遍历一个 `ArrayList`。以下是对这段代码的详细解释: 1. 首先,我们创建一个 `ArrayList` 并填充10个整数元素,如下: ```java List...

    示例iterator使用及技巧

    通过本文的学习,读者将能够更好地理解和掌握`Iterator`的用法。 #### 一、基本概念与使用方法 ##### 1. `Iterator`接口简介 `Iterator`接口定义了用于访问集合元素的方法,包括获取下一个元素、检查是否还有更多...

    Iterator详解

    对于需要双向遍历或在List中进行插入和删除操作的情况,Java提供了`ListIterator`接口,它是`Iterator`的子接口。`ListIterator`提供了`hasPrevious()`、`previous()`、`add()`和`set()`等额外的方法,增强了对List...

    Java系列Iterator

    Java 迭代器(Iterator)是Java集合框架的核心部分,它提供了一种高效且方便的方式来遍历和操作集合中的元素,而无需关心底层数据结构的实现细节。在Java中,迭代器是一个接口,位于`java.util`包下,主要用于遍历...

    Java集合面试题.docx

    集合中添加元素?...而Iterator和ListIterator则是遍历集合的标准工具,它们的设计考虑了多线程环境下的安全性和遍历的顺序性。掌握这些知识点对于Java开发者来说,无论是面试还是实际开发,都是非常重要的。

    java简答题

    方法的重载是指多个方法具有相同的方法名,但具有不同的参数列表,方法的重写是指子类重写父类的方法。 本文总结了 Java 面试题中的知识点,涵盖了 Java 的基础知识、集合框架、数据库访问、多线程、面向对象编程等...

    java学习笔记之集合详细

    Java集合框架是Java编程语言中一个非常核心的部分,主要用于存储和操作对象。在这个学习笔记中,我们将深入探讨集合的特点、集合与数组的区别、集合的主要接口...通过不断地实践和学习,可以更好地理解和应用这些概念。

    详解Java中Iterator迭代器的用法

    下面我们将深入探讨Java中`Iterator`的使用方法和特点。 ### 1. `Iterator`接口概述 `Iterator`接口位于`java.util`包中,主要提供了三个核心方法: - `boolean hasNext()`: 检查迭代器是否还有更多的元素。如果...

    java.util.ConcurrentModificationException 异常问题详解1

    在实际开发中,我们可以使用 ListIterator 或者其他方法来避免这个异常,例如使用 CopyOnWriteArrayList 替代 ArrayList,或者使用 synchronized 块来同步遍历和修改集合的操作。 ConcurrentModificationException ...

    最终JAVA面试题目汇总 Java面试题集锦 Java面试题大全 java面试100题目.pdf

    3. Iterator与ListIterator:掌握遍历集合的方法,了解其差异。 4. 接口与实现:掌握Collection和Map接口的常用方法,理解迭代器模式。 三、异常处理 1. 异常分类:理解Checked异常和Unchecked异常的区别。 2. ...

    《Java语言程序设计(Java7) 入门与提高篇》源代码

    - Iterator和ListIterator迭代器的使用 - 泛型:类型参数化和通配符 6. **第六章(ch6):异常处理** - 异常的概念与分类:检查异常和运行时异常 - try-catch-finally语句块 - throws关键字:声明异常 - ...

    java简单实例程序源代码

    6. **ch8**: 可能介绍了集合框架,如ArrayList、LinkedList、HashMap等数据结构,以及Iterator和ListIterator等遍历方式。 7. **ch9**: 可能涵盖了反射(reflection)和动态代理,这两个高级特性允许程序在运行时检查...

Global site tag (gtag.js) - Google Analytics