java零基础入门-Iterator迭代器

576 阅读5分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 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 !!!

-------------------------------------------

⭐️若喜欢我,就请关注我叭。

⭐️若对您有用,就请点赞叭。

⭐️若有疑问,就请评论留言告诉我叭。

-------------------------------------------