Java基础 第三节 第七课

举报
我是小白呀iamarookie 发表于 2021/09/11 01:03:22 2021/09/11
1.2k+ 0 0
【摘要】 Iterator 迭代器 Iterator 接口概述迭代的概念常用方法代码展示 迭代器的实现原理增强 for练习 Iterator 接口 在程序开发中, 经常需要遍历集合中的所有元...

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 仅仅作为遍历操作出现.

文章来源: iamarookie.blog.csdn.net,作者:我是小白呀,版权归原作者所有,如需转载,请联系作者。

原文链接:iamarookie.blog.csdn.net/article/details/110255505

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。