一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第25天,点击查看活动详情。
哈喽,各位小伙伴们好,我是喵手。
今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流学习,互相学习,才能成长的更快,对吧。
我是一名java开发,所以日常接触到最多的就是java啦,所以我趁自己有空,就来好好回忆,把自己学到的会的,进行输出,不图什么有回报,只想能帮助到更多的小伙伴,就好。
小伙伴们在批阅的过程中,如果觉得文章不错,欢迎点赞、收藏、关注哦。三连即是对喵手我创作道路上最好的鼓励与支持!
一、前言
论前几期啊,我们是分别讲了Object类
、Date类
、FormDate类
、Calendar类
、System类
及StringBuilder类
,不知道大家掌握的如何,如果没有及时巩固的同学,可以看我这里,我给大家罗列了下,快速学习通道,只希望能帮助到大家更好的学习与成长,这就是我写作的初衷。
接下来,我要给大家讲一个新东西了啊。虽然每天一期新类,但是我会尽量控制文章篇幅,让大家都有个很好的体验。如果不清楚,可以看看我接下来演示的,我会做到句句重点!绝不废话。
二、Iterator接口
今天,我要给大家讲一下Iterator
接口,在程序开发中,对集合遍历是必不可少的。其中常用的我都是用for、foreach等比较多,但是今天我所讲的这个也是针对集合进行迭代处理用的。
1、概念
Iterator
接口是JDK专门提供的一个接口,其包路径:java.util.Iterator
。说起Iterator
,它也是属于java集合的成员之一,只是跟Collection集合有所不同,Collection集合主要用于存放元素,而Iterator
主要是作用于集合元素的迭代(遍历)。因此Iterator还有个称号,迭代器。
2、迭代
说起迭代器,那你们知道迭代是个什么吗?基本小伙伴都是知道的,没关系,我给哪些不知道的小伙伴们科普一下,迭代,作为专业术语,其实它就是对Collection集合元素的通用获取方式。
其在进行元素获取时,首先要判断集合是否有元素,若有,则把这个元素取出来,接着又回到上一步,进行判断是否有元素,有则一直取,直到把所有元素都取出来位置,没有则迭代结束。
3、Iterator常用方法
-
next():返回迭代的下一个元素。
-
hasNext():判断是否有下一个元素,有则返回true,否则返回false。
注意:如果不存在下一个元素,却有直接使用next(),会报此错:java.util.NoSuchElementException
表示没有集合元素。
4、实例演示
接下来,我结合实例给大家演示一下, Iterator迭代器如何创建及如何使用的。
@Test
public void test() {
//创建一个集合对象。
Collection<String> collection = new ArrayList<String>();
//添加元素到集合中
collection.add("后羿");
collection.add("赵云");
collection.add("李白");
//使用迭代器遍历输出。每个对象都有一个属于自己的迭代器
Iterator<String> iterator = collection.iterator();
//判断下一位元素是否存在,存在则取出
while (iterator.hasNext()){
//取出迭代的元素
String value = iterator.next();
//控制台输出
System.out.println(value);
}
}
具体代码执行截图:
三、Iterator实现原理
我们在上述已经完成了Iterator迭代器整个遍历的过程,那你们有么有对它进行遍历时思考过它的执行原理是什么样的?
Iterator迭代器在进行遍历时,首先是调用集合的iterator()方法获得 迭代器对象,每一个集合对象都拥有属于它自己迭代器。然后使用hasNext()作为while的循环条件,若存在下一个元素,则继续遍历取出,否则说明已到达集合末尾。
简单给大家画个Iterator迭代元素的示意图吧,帮助大家理解一下,仅供参考:
解读一下:在调用Iterator的next方法之前,迭代器的索引位于第一个元素之前,不指向任何元素,当第一次调用迭代器的 next()
方法后,迭代器的索引会自动向后移动一位,指向第一个元素并将该元素返回;当再次调用next方法时,迭代器的 索引会自动指向第二个元素并将该元素返回,依此类推,直到hasNext方法返回false时,即表示遍历到了集合的末尾,终止对元素的遍历,循环结束。
四、增强for
增强for循环(也称for each循环)是JDK1.5之后专门提出来的一个高级for循环,专门用来遍历数组和集合的。
它的内部原理其实就是个Iterator迭代器,所以在遍历的过程中,不能对集合中的元素进行增删操作。
其使用格式如下:
for(元素类型 变量:Collection集合或者数组){
//写操作代码
}
具体实例如下:
@Test
public void test() {
//创建一个集合对象。
Collection<String> collection = new ArrayList<String>();
//添加元素到集合中
collection.add("后羿");
collection.add("赵云");
collection.add("李白");
for(String str:collection){
System.out.print(str + " ");
}
}
实际运行截图:
... ...
好啦,以上就是本期内容的全部教学内容啦,如果对文中的任何知识点有疑问,欢迎评论区评论留言呀,我看见都会一一解答的。
五、结尾
教学是结束了,但是有些话不知我但讲不当讲,啊哈哈, 可我还是想说给你们听听。如下是我很喜欢的一句话,我打算送给你们,希望我们都能变得更好更优秀。
学习不分先后,知识不分多少;事无巨细,当以虚心求教;三人行,必有我师焉!!!
wished for you successed !!!
-------------------------------------------
⭐️若喜欢我,就请关注我叭。
⭐️若对您有用,就请点赞叭。
⭐️若有疑问,就请评论留言告诉我叭。
-------------------------------------------