前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JDK源码解析之java.util.ListIterator

JDK源码解析之java.util.ListIterator

作者头像
栗筝i
发布2022-12-01 20:22:19
2110
发布2022-12-01 20:22:19
举报
文章被收录于专栏:迁移内容

ListIterator是一个功能更加强大的迭代器接口, 它继承于Iterator接口,只能用于各种List类型的访问。可以通过调用listIterator()方法产生一个指向List开始处的ListIterator, 还可以调用listIterator(n)方法创建一个一开始就指向列表索引为n的元素处的ListIterator。

一、源码解析

代码语言:javascript
复制
public interface ListIterator<E> extends Iterator<E> {
    // 	Query Operations
  	//	以正向遍历列表时,如果列表迭代器有多个元素,则返回true
    boolean hasNext();
		//  返回列表中的下一个元素
    E next();
		//	如果以逆向遍历列表集合,列表迭代器有多个元素,则返回true
    boolean hasPrevious();
		//	返回列表集合中前一个元素
    E previous();
		//  返回对next的后续调用所返回的元素的索引
    int nextIndex();
		//	返回对previous的后续调用所返回元素的索引
    int previousIndex();
    // 	Modification Operations
  	// 	从列表中移除由next或previous返回的最后一个元素
    void remove();
		//	用指定元素替换next或者previous返回的最后一个元素
    void set(E e);
		//将指定的元素插入列表
    void add(E e);
}

由以上源码内容可以看出可以ListIterator的特点:

(1)双向移动(向前/向后遍历).

(2)产生相对于迭代器在列表中指向的当前位置的前一个和后一个元素的索引.

(3)可以使用set()方法替换它访问过的最后一个元素.

(4)可以使用add()方法在next()方法返回的元素之前或previous()方法返回的元素之后插入一个元素.

二、ListIterator与Iterator的区别

一.相同点

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

二.不同点
  • 使用范围不同,Iterator可以应用于所有的集合,Set、List和Map和这些集合的子类型。而ListIterator只能用于List及其子类型。
  • ListIterator有add方法,可以向List中添加对象,而Iterator不能。
  • ListIterator和Iterator都有hasNext()和next()方法,可以实现顺序向后遍历,但是ListIterator有hasPrevious()和previous()方法,可以实现逆向(顺序向前)遍历。Iterator不可以。
  • ListIterator可以定位当前索引的位置,nextIndex()和previousIndex()可以实现。Iterator没有此功能。
  • 都可实现删除操作,但是ListIterator可以实现对象的修改,set()方法可以实现。Iterator仅能遍历,不能修改。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-09-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、源码解析
  • 二、ListIterator与Iterator的区别
    • 一.相同点
      • 二.不同点
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档