列表迭代器并不持有当前元素的引用,其持有的游标是位于列表连个元素之间。可以通过调用next()或者previous()返回列表中的元素。一个拥有n个元素的列表拥有n+1个游标位置,示意图如下:

注意:remove和 set(Object)方法并不是以迭代器的游标为准,而是以最后一次调用迭代器的next()或者previous()方法的返回的元素为准。

基础方法


1.boolean hasNext();

当在迭代器正向遍历仍有可访问的有效元素时,则返回true,换句话说,如果调用next()方法可以返回一个有效元素时,则会返回true,否则返回false

2.E next();

返回迭代器正向访问时的下一个元素,并将迭代器游标进行自增操作。我们可以通过循环调用这个方法达到遍历列表中的目的。同时,我们也可以调用previous()方法来逆向遍历列表。当我们交替调用next()previous()时,迭代器将返回相同的元素。

3.boolean hasPrevious();

当迭代器逆向遍历仍有可以访问的有效元素时,则返回true。也就是说,当调用方法previous()仍然可以返回一个有效元素时,则返回true

4.E previous();

返回逆向遍历列表的下一个元素,并将迭代器的游标进行自减操作。

5.int nextIndex();

返回下一次调用next()时返回的元素的下标。当列表迭代器到达列表末尾时,则会回列表长度。

6.int previousIndex();

返回下一次掉调用previous()时返回的元素的下标。当列表迭代器到达列表头部时,则返回-1。

7.void remove();

删除最后一次调用next()或者previous()返回的元素。调用该方法有两个注意点:

  1. 每次调用next()previous()后,仅能调用一次本方法;
  2. 调用本方法前,不可调用add(E)方法;
8.void set(E e);

替换最后一次调用next()或者previous()返回的元素。在调用本方法前,不可调用add(E)remove()方法。

9.void add(E e);

在列表中插入一个新元素。如果next()可以访问有效元素,则将元素插入到调用next()方法返回的元素之前。即:如果previous()可以访问有效元素,则将元素插入到调用previous()方法返回的元素之后。当列表为空时,则插入的元素为列表中唯一的元素。新元素的插入位置为当前迭代器指定的游标之前,即:插入元素后,调用next()返回元素不受影响,而调用previous()函数,则会返回刚刚插入的新元素。调用这个方法后,会使调用nextIndex()previousIndex()的结构都增大1。插入元素前后的示意图如下:

转载于:https://www.cnblogs.com/czcys/p/6214422.html

java.util.ListIterator相关推荐

  1. JDK源码解析之java.util.ListIterator

    ListIterator是一个功能更加强大的迭代器接口, 它继承于Iterator接口,只能用于各种List类型的访问.可以通过调用listIterator()方法产生一个指向List开始处的List ...

  2. Java迭代器ListIterator

    ListIterator Iterator的子类,增加了一些特有的方法 用于遍历集合中的元素 可以正向迭代.反向迭代 正向迭代,从第一个元素,到最后一个元素 反向迭代,从最后一个元素,到第一个元素 I ...

  3. java list e 查找_源码(04) -- java.util.ListE

    java.util.List 源码分析(JDK1.7) ------------------------------------------------------------------------ ...

  4. 【集合类】 1 java.util.ConcurrentModificationException异常详解ArrayListCopyOnWriteArrayList原理探究

    环境:JDK 1.8.0_111 文章目录 概述 一.单线程情况下问题分析及解决方案 1.1 问题复现 1.2 问题原因分析 1.3 问题解决方案 二. 多线程情况下的问题分析及解决方案 2.1 问题 ...

  5. java迭代器在哪个包里面,java.util.LinkedList.listIterator()方法实例

    全屏 java.util.LinkedList.listIterator(int index)方法返回一个列表迭代器在此列表中的元素(按适当顺序),从列表中的指定位置. 声明 以下是java.util ...

  6. java.util.List学习笔记

    概述 在Java中,List是一种特殊的集合结构,即:List是一种有序的集合.在List接口的实现中,需要提供根据列表下表对元素进行操作的方法,包括:插入,删除,查询和修改等: List一般允许重复 ...

  7. JDK1.8源码(六)——java.util.LinkedList 类

    上一篇博客我们介绍了List集合的一种典型实现 ArrayList,我们知道 ArrayList 是由数组构成的,本篇博客我们介绍 List 集合的另一种典型实现 LinkedList,这是一个由链表 ...

  8. List中subList方法抛出异常java.util.ConcurrentModificationException原理分析

    1.首先从测试代码开始: public class Test {public static void main(String[] args) {List<Integer> list = n ...

  9. J2SE综合对java util的总结 一

    J2SE综合对java util的总结 一 java.util包中包含了一些在Java 2中新增加的最令人兴奋的增强功能:类集.一个类集(collection)是一组对象.类集的增加使得许多java. ...

最新文章

  1. OCP-052 053部分答案解析
  2. kalivm 虚拟机访问win文件夹_利用vmware搭建属于自己的win虚拟环境
  3. 如何改变cmd的编码格式?
  4. 南孚电池:如何从0-1建立经营分析报表平台,助力集团转型?
  5. Redis面试 - 如何保证缓存与数据库的双写一致性?
  6. 栈操作与栈帧 (转)
  7. SpringCloud组件:Eureka服务注册是采用主机名还是IP地址?
  8. DenseNet介绍
  9. 如何卸载赛门铁克(Symantec)企业防病毒客户端软件SEP(Symantec Endpoint Protection)?
  10. android so文件解密器,【Android 原创】so文件动态加解密的CrackMe
  11. siri中文语音助理_2020年人工智能和语音控制的7项新发展
  12. mt4虚拟服务器账户无效,mt4为什么会有无效账户 无效账户解决方法
  13. 微信小程序之弹窗功能
  14. 谷歌浏览器不能上网DNS_PROBE_FINISHED_NXDOMAIN
  15. 2021SC@SDUSC Zxing开源代码(十一)Data Matrix二维码(四)
  16. 链路追踪Logback-ERROR日志邮件发送
  17. php 405 not allowed,405 Not Allowed 错误
  18. 谷歌浏览器好用的复制粘贴插件_关于谷歌浏览器(chrome)的一些好用的插件推荐...
  19. 单片机C语言中关键词code的作用
  20. Unity3D热更设计:一款基于 HybridCLR的C#热更方案

热门文章

  1. idea for mac 控制台 mvn command not found
  2. android resolvesize方法,Android 自定义View中onMeasure()中使用resolveSize()是什么意思?
  3. ElementUI:文本框实现远程搜索的用法
  4. 程序员幽默:一整天都在修复 bug 是啥感觉?
  5. Javascript对象及数组用法笔记
  6. 也许,这样理解HTTPS更容易
  7. JS关闭浏览器 (不弹出提示框)
  8. 重口味动漫_每种口味的图标样式
  9. oracle 创建view时,授权给用户
  10. Teradata天睿公司推出适用各种部署环境的全球最强分析数据库