首页 Java java教程 Java中ListIterator和Iterator详解与辨析

Java中ListIterator和Iterator详解与辨析

Dec 13, 2016 pm 05:20 PM
iterator

在使用java集合的时候,都需要使用Iterator。但是java集合中还有一个迭代器ListIterator,在使用List、ArrayList、LinkedList和Vector的时候可以使用。这两种迭代器有什么区别呢?下面我们详细分析。这里有一点需要明确的时候,迭代器指向的位置是元素之前的位置,如下图所示:

1.png

这里假设集合List由四个元素List1、List2、List3和List4组成,当使用语句Iterator it = List.Iterator()时,迭代器it指向的位置是上图中Iterator1指向的位置,当执行语句it.next()之后,迭代器指向的位置后移到上图Iterator2所指向的位置。

首先看一下Iterator和ListIterator迭代器的方法有哪些。

Iterator迭代器包含的方法有:

hasNext():如果迭代器指向位置后面还有元素,则返回 true,否则返回false

next():返回集合中Iterator指向位置后面的元素

remove():删除集合中Iterator指向位置后面的元素

ListIterator迭代器包含的方法有:

add(E e): 将指定的元素插入列表,插入位置为迭代器当前位置之前

hasNext():以正向遍历列表时,如果列表迭代器后面还有元素,则返回 true,否则返回false

hasPrevious():如果以逆向遍历列表,列表迭代器前面还有元素,则返回 true,否则返回false

next():返回列表中ListIterator指向位置后面的元素

nextIndex():返回列表中ListIterator所需位置后面元素的索引

previous():返回列表中ListIterator指向位置前面的元素

previousIndex():返回列表中ListIterator所需位置前面元素的索引

remove():从列表中删除next()或previous()返回的最后一个元素(有点拗口,意思就是对迭代器使用hasNext()方法时,删除ListIterator指向位置后面的元素;当对迭代器使用hasPrevious()方法时,删除ListIterator指向位置前面的元素)

set(E e):从列表中将next()或previous()返回的最后一个元素返回的最后一个元素更改为指定元素e

一.相同点

都是迭代器,当需要对集合中元素进行遍历不需要干涉其遍历过程时,这两种迭代器都可以使用。

二.不同点

1.使用范围不同,Iterator可以应用于所有的集合,Set、List和Map和这些集合的子类型。而ListIterator只能用于List及其子类型。

2.ListIterator有add方法,可以向List中添加对象,而Iterator不能。

3.ListIterator和Iterator都有hasNext()和next()方法,可以实现顺序向后遍历,但是ListIterator有hasPrevious()和previous()方法,可以实现逆向(顺序向前)遍历。Iterator不可以。

4.ListIterator可以定位当前索引的位置,nextIndex()和previousIndex()可以实现。Iterator没有此功能。

5.都可实现删除操作,但是ListIterator可以实现对象的修改,set()方法可以实现。Iterator仅能遍历,不能修改。

三:Iterator和ListIterator用法示例

ListIterator用法:

package com.collection;

import java.util.LinkedList;
import java.util.List;
import java.util.ListIterator;

public class ListIteratorTest {
 public static void main(String[] args) {  // TODO Auto-generated method stub  List<String> staff = new LinkedList<>();  staff.add("zhuwei");  staff.add("xuezhangbin");  staff.add("taozhiwei");  ListIterator<String> iter = staff.listIterator();  String first = iter.next();    //删除zhuwei  iter.remove();    //把zhuwei改为simei  //iter.set("simei");  System.out.println("first:"+first);    iter.add("xiaobai");    //遍历List元素  System.out.println("遍历List中元素,方法一:");  for(String str : staff)   System.out.println(str+"  ");    iter = staff.listIterator();  System.out.println("遍历List中元素,方法二:");  while(iter.hasNext())  {   System.out.println(iter.next());  } }
}
登录后复制


本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

Java Iterator 与 Iterable:揭秘迭代器与可迭代对象的世界 Java Iterator 与 Iterable:揭秘迭代器与可迭代对象的世界 Feb 19, 2024 pm 02:15 PM

在Java编程中,Iterator和Iterable接口是用于处理集合中元素的重要工具。Iterator接口提供了对集合元素进行迭代访问的方法,而Iterable接口则定义了集合的可迭代性,使集合中的元素可以通过Iterator访问。这两者的紧密配合,为我们提供了遍历集合元素的通用方法。Iterator接口Iterator接口定义了以下方法:booleanhasNext():检查集合中是否还有元素。Enext():返回集合中的下一个元素。voidremove():移除当前元素。Iterable接

Java Iterator 和 Iterable 的深入比较:优缺点分析 Java Iterator 和 Iterable 的深入比较:优缺点分析 Feb 19, 2024 pm 04:20 PM

概念差异:Iterator:Iterator是一个接口,代表一个从集合中获取值的迭代器。它提供了MoveNext()、Current()和Reset()等方法,允许你遍历集合中的元素,并对当前元素进行操作。Iterable:Iterable也是一个接口,代表一个可迭代的对象。它提供了Iterator()方法,用于返回一个Iterator对象,以便于遍历集合中的元素。使用方式:Iterator:要使用Iterator,需要先获得一个Iterator对象,然后调用MoveNext()方法来移动到下一

Java Iterator 与 Iterable:迈入编写优雅代码的行列 Java Iterator 与 Iterable:迈入编写优雅代码的行列 Feb 19, 2024 pm 02:54 PM

Iterator接口Iterator接口是一个用于遍历集合的接口。它提供了几个方法,包括hasNext()、next()和remove()。hasNext()方法返回一个布尔值,指示集合中是否还有下一个元素。next()方法返回集合中的下一个元素,并将其从集合中删除。remove()方法从集合中删除当前元素。以下代码示例演示了如何使用Iterator接口来遍历集合:Listnames=Arrays.asList("John","Mary","Bob");Iterator

Java Iterator和Iterable:集合遍历的密钥,揭开其神秘面纱 Java Iterator和Iterable:集合遍历的密钥,揭开其神秘面纱 Feb 20, 2024 am 10:27 AM

Iterator简介Iterator是Java中用于遍历集合的接口。它提供了一组方法,允许您以一种顺序的方式访问集合中的元素。您可以使用Iterator来遍历List、Set和Map等集合类型。演示代码:Listlist=newArrayList();list.add("one");list.add("two");list.add("three");Iteratoriterator=list.iterator();while(iter

Java Iterator和Iterable:揭露集合遍历的幕后故事 Java Iterator和Iterable:揭露集合遍历的幕后故事 Feb 19, 2024 pm 04:15 PM

迭代器(Iterator)和可迭代对象(Iterable)是Java集合框架中两个非常重要的接口。它们使您能够遍历集合中的元素,而无需了解集合的具体实现。Iterator接口定义了用于遍历集合的方法,包括hasNext()和next()。hasNext()方法检查集合中是否还有更多元素,而next()方法返回集合中的下一个元素。Iterable接口定义了一个用于创建Iterator的方法,即iterator()方法。该方法返回一个Iterator对象,该对象可以用于遍历集合。以下是使用Itera

如何使用Java中的Iterator函数进行集合遍历 如何使用Java中的Iterator函数进行集合遍历 Jun 26, 2023 pm 03:47 PM

在Java中,集合是一种常见的数据结构,它允许我们存储和处理大量数据。在许多情况下,我们需要对集合进行遍历,以便对其中的元素进行操作。为了实现这一目的,Java提供了Iterator函数,它可以让我们简便地遍历集合中的元素。在本文中,我们将介绍如何使用Java中的Iterator函数进行集合遍历。一、Iterator函数的定义在Java中,Iterator是

Java Iterator 与 Iterable:解锁 Java 集合的强大力量 Java Iterator 与 Iterable:解锁 Java 集合的强大力量 Feb 19, 2024 pm 07:00 PM

在Java中,集合(collection)是一组元素的集合,提供了统一的接口和方法来存储、检索和操作这些元素。Iterator和Iterable是两个重要的Java接口,它们提供了遍历集合元素的通用机制。Iterator接口定义了用于遍历集合的hasNext()和next()方法。hasNext()方法用于检查集合中是否还有未遍历的元素,next()方法用于返回当前元素并将其移至下一个元素。Iterable接口定义了iterator()方法,该方法返回一个Iterator对象,用于遍历集合中的元

Java Iterator 和 Iterable:深入剖析 Java 集合遍历机制 Java Iterator 和 Iterable:深入剖析 Java 集合遍历机制 Feb 19, 2024 pm 08:36 PM

Iterator接口Iterator接口是Java集合框架中用于遍历集合的低级接口。它定义了两个主要方法:hasNext():检查集合中是否还有更多元素。next():返回集合中的下一个元素。Iterator接口还定义了一些可选的方法,例如remove()方法,用于从集合中删除当前元素。使用Iterator接口可以使用以下步骤使用Iterator接口遍历集合:获取集合的Iterator对象。使用hasNext()方法检查集合中是否还有更多元素。如果还有更多元素,则使用next()方法获取下一个元

See all articles