List逆向遍历、反向遍历--Iterator详解
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详解相关推荐
- php遍历视频文件,php使用glob函数遍历文件和目录详解
php glob()函数返回匹配指定模式的文件名或目录.因此我们可以使用glob函数来查找文件,也可以实现目录的遍历. 函数说明:array glob ( string $pattern [, int ...
- linux jq 遍历数组,jquery 遍历数组 each 方法详解
JQuery拿取对象的方式 $('#id') :通过元素的id $('tagName') : 通过元素的标签名 $('tagName tagName') : 通过元素的标签名,eg: $('ul li ...
- jquery在html实现遍历,jQuery教程之jQuery遍历、HTML操作详解
本篇文章探讨了jQuery教程之jQuery遍历.HTML操作详解,希望阅读本篇文章以后大家有所收获,帮助大家对相关内容的理解更加深入. < 什么是遍历? jQuery 遍历,意为"移 ...
- Nginx反向代理配置详解
Nginx反向代理配置详解 Nginx简单的反向代理配置,包括配置文件中各项参数的的注释,好了,开始! 开始首先安装Nginx 一.建立用户和用户组 1 2 ./usr/sbin/groupadd w ...
- JS逆向之浏览器补环境详解
JS逆向之浏览器补环境详解 "补浏览器环境"是JS逆向者升职加薪的必备技能,也是工作中不可避免的操作. 为了让大家彻底搞懂 "补浏览器环境"的缘由及原理,本文将 ...
- JAVA中ListIterator和Iterator详解与辨析
在使用java集合的时候,都需要使用Iterator.但是java集合中还有一个迭代器ListIterator, 在使用List.ArrayList.LinkedList和Vector的时候可以使用. ...
- C++迭代器iterator详解
知识的学习在于点滴记录,坚持不懈:知识的学习要有深度和广度,不能只流于表面,坐井观天:知识要善于总结,不仅能够理解,更知道如何表达! 目录 迭代器概念 iterator迭代器实现 容器迭代器失效问题 ...
- nginx系列:nginx反向缓存代理详解
小生博客:http://xsboke.blog.51cto.com 如果有疑问,请点击此处,然后发表评论交流,作者会及时回复. -------谢谢您的参考,如有疑问,欢迎交流 一. 代理和nginx相 ...
- java iterator对象_JAVA Iterator 详解 代码
Iterator接口 1.所有实现了Collection接口的容器类都有一个Iterator方法用以返回一个实现了Iterator接口的对象 2.Iterator对象称为迭代器,用以方便的操作实现对象 ...
最新文章
- redis基础之有序集合应用
- gearman python 实例
- 一切都要从华为云 CloudIDE 酷似 VS Code 说起
- 华中科技大学文华学院 CSDN 高校俱乐部成立啦!
- 快速了解前端开发HTML的正确姿势
- 95-220-020-源码-Idle-Flink中Idle停滞流机制
- oracle 11g 完美卸载,oracle 11g完美卸载
- 武春岭 《C语言程序设计》教案PPT,重庆出版社出版,李勇主编的大一C语言课程ppt第1章.ppt...
- android客户端日志,更新日志 - BugHD Android 客户端上线
- [转载]taking photos with live image preview
- 安卓手机运行ios教程_安卓手机充电提示音教程
- wsl2 Ubuntu安装Anaconda3
- python监控网页变化教程_Python实时监控网站浏览记录实现过程详解
- IDEA导入项目不显示项目结构src解决
- 购物网站,网上购物系统,网上商城系统毕业设计
- 俄罗斯技术宅教你如何花5万美元制作家用DNA测序仪
- java jtable 单元格合并_JTable合并单元格
- [下属谈话]管理者与下属谈话的技巧以及注意点
- 面试题之JAVA高级篇
- 机器学习模型 知乎_算法有没有价值观?知乎内容推荐算法解析