集合——Iterator 接口(迭代器)

在程序开发过程中,经常需要遍历集合中的所有元素。针对这种需求,JDK专门提供了一个接口。

java.util.Iterator接口。Iterator接口也是Java集合中的一员,但它与Collection、Map接口有所不同,

Collection接口与Map接口主要用于存储元素,而Iterator主要用于迭代访问(即遍历)Collection中的元素,

因此Iterator对象也被称为迭代器。

 

迭代:即Collection集合元素的通用获取方式。

在获取元素之前先要判断集合中有没有元素,如果有,就把这个元素取出来,

继续再判断,如果还有就再取出来。一直把集合中的元素全部取出来。

这种方式专业术语称为迭代。

 

java.util.Iterator接口:迭代器(对集合进行遍历)

有两个常用的方法:

1. boolean hasNext() 如果仍有元素可以迭代,则返回true。

判断集合中还有没有下一个元素,又就返回true,没有就返回false

 

2.E next() 返回迭代下一个元素。

iterator 迭代器,是一个接口,我们无法直接使用,需要使用iterator 接口的实现类对象,获取实现类的方法比较特殊。

Collection接口中有一个方法,叫iterator(),这个方法返回的就是迭代器的实现类对象。

Iterator iterator() 返回在此collection的元素上进行迭代的迭代器。

 

迭代器的使用步骤(**):

1.使用集合中的方法iterator()获取迭代器的实现类对象,使用Iterator接口接收(多态)

2.使用 Iterator接口中的方法hasNext判断还有没有下一个元素

3.使用Iterator接口中的方法next取出集合中的下一个元素

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;


public class Demo01Iterator {
    public static void main(String[] args) {
        //创建一个集合对象
        Collection coll = new ArrayList<>();  //左接口右实现类 多态
        //往集合中添加元素
        coll.add("姚明");
        coll.add("乔丹");
        coll.add("科比");
        coll.add("詹姆斯");
        coll.add("艾弗森");

        System.out.println(coll);

        /**
         1.使用集合中的方法iterator()获取迭代器的实现对象,使用Iterator接口接收(多态)
         注意:
         Iterator接口也是有泛型的,迭代器的泛型跟着集合走,集合是什么泛型,迭代器就是什么泛型。
         */

        //接口                     实现类对象
        Iterator it = coll.iterator();  //多态

        //2.使用Iterator接口中的方法hasNext判断还有没有下一个元素
        boolean b = it.hasNext();
        System.out.println(b);   //true

        //3.使用Iterator接口中的方法next取出集合中的下一个元素
        String s = it.next();
        System.out.println(s);

         b = it.hasNext();
        System.out.println(b);
        s = it.next();
        System.out.println(s);

         b = it.hasNext();
        System.out.println(b);
         s = it.next();
        System.out.println(s);

         b = it.hasNext();
        System.out.println(b);
         s = it.next();
        System.out.println(s);

         b = it.hasNext();
        System.out.println(b);
         s = it.next();
        System.out.println(s);

        b = it.hasNext();
        System.out.println(b);
        s = it.next();   //已经没有元素了 再取出元素 会抛出NoSuchElementException没有元素异常
        System.out.println(s);

    }
}

集合——Iterator 接口(迭代器)_第1张图片

 

从上面代码发现,使用迭代器取出的集合元素的代码,是一个重复的过程

所以我们可以使用循环优化

在不知道集合有多少元素,使用while循环

循环结束的条件,hasNext方法返回false

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;


public class Demo02Iterator {
    public static void main(String[] args) {

                //创建一个集合对象
                Collection coll = new ArrayList<>();  //左接口右实现类 多态
                //往集合中添加元素
                coll.add("姚明");
                coll.add("乔丹");
                coll.add("科比");
                coll.add("詹姆斯");
                coll.add("艾弗森");

                System.out.println(coll);



        /**
         1.使用集合中的方法iterator()获取迭代器的实现对象,使用Iterator接口接收(多态)
         注意:
         Iterator接口也是有泛型的,迭代器的泛型跟着集合走,集合是什么泛型,迭代器就是什么泛型。
         */

        //接口                     实现类对象
        Iterator it = coll.iterator();  //多态
/**
 从上面代码发现,使用迭代器取出的集合元素的代码,是一个重复的过程
 所以我们可以使用循环优化
 在不知道集合有多少元素,使用while循环
 循环结束的条件,hasNext方法返回false
 */
        //循环代码
        //①
        while (it.hasNext()){
            String str = it.next();
            System.out.println(str);
        }

        //②
       for(Iterator itr = coll.iterator();itr.hasNext();){
           String str1 = itr.next();
           System.out.println(str1);

       }
           }
}

集合——Iterator 接口(迭代器)_第2张图片

你可能感兴趣的:(java基础进一步学习,编程学习技术)