Iterator迭代器的基础知识整理

Iterator迭代器概述

由于集合框架中的集合容器太多,而每个集合容器数据存储的方式都不一样,这导致我们取数据的时候方式也不完全相同。Java针对所有集合定义了一个接口,在这个接口中描述了所有容器的共性遍历规则。

对于从集合中取元素,无论是什么数据结构,最终共性的取出方式都是一个一个取,取之前先判断,有元素,则取一个,没有元素,则结束,这种方式称之为迭代。

java.util.Iterator接口定义了集合最基本的遍历方式:针对一个集合,应该首先去判断集合中有没有元素,有就取出这个元素,没有就不用遍历了。

常用方法

public boolean hasNext():判断集合中是否有元素,如果有则返回true。

public E next():返回迭代中的下一个元素,如果没哟下一个元素,则报错。

/**
 * @description: 测试类
 * @author: Murphy
 * @date: 2020/7/37:44 上午
 */
public class Demo {
    public static void main(String[] args) {
        ArrayList<Integer> arrayList = new ArrayList<>();
        arrayList.add(4);
        arrayList.add(5);
        Iterator<Integer> iterator = arrayList.iterator();
        while (iterator.hasNext()) {
            System.out.println(iterator.next());
        }
    }
}

迭代器的实现原理

可以把迭代器对象理解称为一个移动的光标,开始的时候光标会在集合容器的最上面,使用迭代器对象调用hasNext()函数时,光标会指向集合中的第一个元素,如果hasNext()函数返回true,则说明有元素可以迭代,则可以用迭代器对象调用next()函数将当前光标所指的元素取出来。

每执行完一次next函数,光标都会往下移动,直到移动到集合最底端,找不到元素为止。当光标移动到集合最底端时,代表该迭代器对象也使用完毕,如果需要重新迭代集合,需要再重新创建一个迭代器对象。

增强for

增强for循环(也称foreach循环)是JDK1.5以后出来的一个高级for循环,专门用来遍历数组和集合的,它的内部原理其实是个Iterator迭代器。

foreach循环格式:

for(数组或集合中元素的类型 变量名:数组名或集合名){变量名所指的空间中,存储的是从数组或集合中取出的数据}。

/**
 * @description: 测试类
 * @author: Murphy
 * @date: 2020/7/37:44 上午
 */
public class Demo {
    public static void main(String[] args) {
        ArrayList<Integer> arrayList = new ArrayList<>();
        arrayList.add(4);
        arrayList.add(5);
        for (int i :
                arrayList) {
            System.out.println(i);
        }
    }
}

你可能感兴趣的:(Murphy从零开始学Java)