Java基础 第三节 第七课

Iterator 接口

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

概述

Iterator 接口也是 Java 集合中的一员. 但它与 Collection, Map 接口有所不同. Collection 接口与 Map 接口主要用于存储元素, 而 Iterator 主要用于迭代访问 (即遍历) Collection 中的元素. 因此 Iterator 对象也被称为迭代器.

想要遍历 Collection 集合, 那么就要获取该集合迭代器完成迭代操作. 下面介绍一下获取携带器的方法.

publicIterator iterator():

获取集合对象的迭代器, 用来遍历集合中的元素,

迭代的概念

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

在取元素之前先要判断集合中有没有元素. 如果有, 就把这个元素取出来, 再继续判断, 如果还有就再取出来. 一直把集合中的所有元素全部取出. 这种取出方式专业术语称为迭代.

常用方法

Iterator 接口的常用方法如下:

  • publicE next(): 返回迭代的下一个元素
  • publicboolean hasNext(): 如果仍有元素可以迭代, 则返回 true

代码展示

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

public class Test {
    public static void main(String[] args) {
        // 使用多态创建对象
        Collection<String> collection = new ArrayList<>();
        
        // 添加元素到集合
        collection.add("littlewhite");
        collection.add("middlewhite");
        collection.add("bigwhite");
        
        // 使用迭代器变量
        // 获得迭代器对象
        Iterator<String> iterator = collection.iterator();
        
        while (iterator.hasNext()){  // 判断是否有迭代元素
            String temp = iterator.next();  // 获取迭代出的元素
            System.out.println(temp);
        }
    }
}

输出结果:
littlewhite
middlewhite
bigwhite

迭代器的实现原理

当遍历集合时:

  1. 首先通过调用集合的 Iterator() 方法获得迭代器对象
  2. 然后使用 hashNext() 方法判断集合中是否存在下一个元素
  3. 如果存在, 则调用 next() 方法将元素取出. 否则说明已到达了集合末尾, 停止遍历元素.

Iterator 迭代器对象在遍历集合时, 内部采用指针的方法来跟踪集合中的元素:

  1. 在使用 Iterator 的 next 方法之前, 迭代器的索引位于第一个元素之前, 不指向任何元素
  2. 当第一次调用迭代器的 next 方法后, 迭代器的索引会向后移动一位, 指向第一个元素并将该元素返回
  3. 当再次调用 next 方法时, 迭代器的索引会指向第二个元素并将该元素返回
  4. 以此类推, 直到 hasNext 方法返回 flase, 表示到达了集合的末尾, 终止对元素的遍历
    在这里插入图片描述

增强 for

增强 for 循环 (也称 for each 循环) 是 JDK1.5 以后出来的一个高级 for 循环, 专门用来遍历数组和集合的.

它的内部原理其实是个 Iterator 迭代器. 所以在遍历的过程中, 不能对集合中的元素进行增删操作.

格式:

for(元素的数据类型 变量 : Collection 集合 or 数组){
    //写操作代码
}

增强循环用于遍历 Collection 和数组. 通常只进行遍历元素, 不要在遍历的过程中对集合元素进行增删操作.

练习

练习 1: 遍历数组

public class Test {
    public static void main(String[] args) {
        int[] array = {1,2,3};
        // 使用增强for遍历数组
        for(int temp : array){  
            // temp 代表数组中的每个元素
            System.out.println(temp);            
        }
    }
}

输出结果:
1
2
3

练习 2: 遍历集合

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

public class Test27 {
    public static void main(String[] args) {
        Collection<String> collection = new ArrayList<>();
        collection.add("littlewhite");
        collection.add("middlewhite");
        collection.add("bigwhite");

        // 使用增强for遍历
        for(String temp : collection){
            System.out.println(temp);
        }
    }
}

输出结果:
littlewhite
middlewhite
bigwhite

注: 新 for 循环必须有被遍历的目标. 目标只能是 Collection 或者是数组. 新式 for 仅仅作为遍历操作出现.

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 岁月 设计师:pinMode 返回首页