内容简介:在使用Java集合的时候,都需要使用Iterator。但是java集合中还有一个迭代器ListIterator,在使用List、ArrayList、LinkedList和Vector的时候可以使用。这两种迭代器有什么区别呢?下面我们详细分析。这里有一点需要明确的时候,迭代器指向的位置是元素之前的位置。首先看一下Iterator和ListIterator迭代器的方法有哪些。
在使用 Java 集合的时候,都需要使用Iterator。但是java集合中还有一个迭代器ListIterator,在使用List、ArrayList、LinkedList和Vector的时候可以使用。这两种迭代器有什么区别呢?下面我们详细分析。这里有一点需要明确的时候,迭代器指向的位置是元素之前的位置。
首先看一下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仅能遍历,不能修改。
ArrayList<String> stringArrayList1 = new ArrayList<String>();
ArrayList<String> stringArrayList2 = new ArrayList<String>();
stringArrayList1.add("ok");
stringArrayList1.add("hello");
stringArrayList1.add("world");
stringArrayList2.add("好的");
stringArrayList2.add("你好");
stringArrayList2.add("世界");
stringArrayList1.addAll(stringArrayList2);
ListIterator<String> iterator = stringArrayList1.listIterator();
System.out.println("从前往后输出:");
while (iterator.hasNext()){
System.out.println("next="+iterator.next());
}
System.out.println("\r\n从后往前输出:");
while (iterator.hasPrevious()){
System.out.println("previous="+iterator.previous());
}
注意:一定要先进行由前向后输出,之后才能进行由后向前的输出。
写在最后
- 第一:看完点赞,感谢您的认可;
- ...
- 第二:随手转发,分享知识,让更多人学习到;
- ...
- 第三:记得点关注,每天更新的!!!
- ...
最后,欢迎做Java的工程师朋友们加入Java高级架构进阶Qqun:963944895
群内有技术大咖指点难题,还提供免费的Java架构学习资料(里面有高可用、高并发、高性能及分布式、Jvm性能调优、Spring源码,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多个知识点的架构资料)
比你优秀的对手在学习,你的仇人在磨刀,你的闺蜜在减肥,隔壁老王在练腰, 我们必须不断学习,否则我们将被学习者超越!
趁年轻,使劲拼,给未来的自己一个交代!
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 三年半Java后端面试经历
- 2018秋招后端面经--百度、网易、拼多多、滴滴
- 前百度面试官整理的——Java后端面试题(一)
- C++服务端面试准备(3)数据结构与算法相关
- 4000 字干货长文!从校招和社招的角度说说如何准备大厂 Java 后端面试?
- C++/Golang的数组类型异同
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Web Data Mining
Bing Liu / Springer / 2006-12-28 / USD 59.95
Web mining aims to discover useful information and knowledge from the Web hyperlink structure, page contents, and usage data. Although Web mining uses many conventional data mining techniques, it is n......一起来看看 《Web Data Mining》 这本书的介绍吧!