List逆向遍历、反向遍历–Iterator详解


概述

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

这里假设集合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

相同点

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

不同点

  • 使用范围不同,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仅能遍历,不能修改。

用法&&例子:List逆向遍历

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;public class IteratorDemo {public static void main(String[] args) {List<Integer> list = new ArrayList<Integer>();// 创建列表for (int i = 0; i < 10; i++) {// 向列表中增加10个元素list.add(i);}Iterator it = list.iterator();System.out.print("ArrayList集合中的元素为:");while(it.hasNext()){System.out.print(it.next()+" ");}     System.out.println();System.out.println("逆序后为:");ListIterator<Integer> li = list.listIterator();// 获得ListIterator对象for (li = list.listIterator(); li.hasNext();) {// 将游标定位到列表结尾li.next();}for (; li.hasPrevious();) {// 逆序输出列表中的元素System.out.print(li.previous() + " ");}}
}

搞定,溜了溜了~

List逆向遍历、反向遍历--Iterator详解相关推荐

  1. php遍历视频文件,php使用glob函数遍历文件和目录详解

    php glob()函数返回匹配指定模式的文件名或目录.因此我们可以使用glob函数来查找文件,也可以实现目录的遍历. 函数说明:array glob ( string $pattern [, int ...

  2. linux jq 遍历数组,jquery 遍历数组 each 方法详解

    JQuery拿取对象的方式 $('#id') :通过元素的id $('tagName') : 通过元素的标签名 $('tagName tagName') : 通过元素的标签名,eg: $('ul li ...

  3. jquery在html实现遍历,jQuery教程之jQuery遍历、HTML操作详解

    本篇文章探讨了jQuery教程之jQuery遍历.HTML操作详解,希望阅读本篇文章以后大家有所收获,帮助大家对相关内容的理解更加深入. < 什么是遍历? jQuery 遍历,意为"移 ...

  4. Nginx反向代理配置详解

    Nginx反向代理配置详解 Nginx简单的反向代理配置,包括配置文件中各项参数的的注释,好了,开始! 开始首先安装Nginx 一.建立用户和用户组 1 2 ./usr/sbin/groupadd w ...

  5. JS逆向之浏览器补环境详解

    JS逆向之浏览器补环境详解 "补浏览器环境"是JS逆向者升职加薪的必备技能,也是工作中不可避免的操作. 为了让大家彻底搞懂 "补浏览器环境"的缘由及原理,本文将 ...

  6. JAVA中ListIterator和Iterator详解与辨析

    在使用java集合的时候,都需要使用Iterator.但是java集合中还有一个迭代器ListIterator, 在使用List.ArrayList.LinkedList和Vector的时候可以使用. ...

  7. C++迭代器iterator详解

    知识的学习在于点滴记录,坚持不懈:知识的学习要有深度和广度,不能只流于表面,坐井观天:知识要善于总结,不仅能够理解,更知道如何表达! 目录 迭代器概念 iterator迭代器实现 容器迭代器失效问题 ...

  8. nginx系列:nginx反向缓存代理详解

    小生博客:http://xsboke.blog.51cto.com 如果有疑问,请点击此处,然后发表评论交流,作者会及时回复. -------谢谢您的参考,如有疑问,欢迎交流 一. 代理和nginx相 ...

  9. java iterator对象_JAVA Iterator 详解 代码

    Iterator接口 1.所有实现了Collection接口的容器类都有一个Iterator方法用以返回一个实现了Iterator接口的对象 2.Iterator对象称为迭代器,用以方便的操作实现对象 ...

最新文章

  1. redis基础之有序集合应用
  2. gearman python 实例
  3. 一切都要从华为云 CloudIDE 酷似 VS Code 说起
  4. 华中科技大学文华学院 CSDN 高校俱乐部成立啦!
  5. 快速了解前端开发HTML的正确姿势
  6. 95-220-020-源码-Idle-Flink中Idle停滞流机制
  7. oracle 11g 完美卸载,oracle 11g完美卸载
  8. 武春岭 《C语言程序设计》教案PPT,重庆出版社出版,李勇主编的大一C语言课程ppt第1章.ppt...
  9. android客户端日志,更新日志 - BugHD Android 客户端上线
  10. [转载]taking photos with live image preview
  11. 安卓手机运行ios教程_安卓手机充电提示音教程
  12. wsl2 Ubuntu安装Anaconda3
  13. python监控网页变化教程_Python实时监控网站浏览记录实现过程详解
  14. IDEA导入项目不显示项目结构src解决
  15. 购物网站,网上购物系统,网上商城系统毕业设计
  16. 俄罗斯技术宅教你如何花5万美元制作家用DNA测序仪
  17. java jtable 单元格合并_JTable合并单元格
  18. [下属谈话]管理者与下属谈话的技巧以及注意点
  19. 面试题之JAVA高级篇
  20. 机器学习模型 知乎_算法有没有价值观?知乎内容推荐算法解析

热门文章

  1. java爱听音乐音乐播放器
  2. Minecraft正版账号获得方法
  3. 【读书笔记】金字塔原理-构建金字塔的逻辑顺序
  4. ArcGIS10.8安装教程
  5. 小米世界第三,华为首次跌出前五
  6. android 自动锁屏设置,如何才能使安卓手机不自动锁屏?改成自动黑屏,谢谢
  7. 江苏省数学建模省赛答辩准备
  8. 【Unity数据持久化】Ixmllserializable接口的使用
  9. 洁净厂房洁净度等级SICOLAB
  10. 完完整整地看完这个故事,你敢说还不懂Docker?