我是靠谱客的博主 俊逸香烟,最近开发中收集的这篇文章主要介绍Java 迭代器和增强 for 循环,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

迭代器

概述

在程序开发过程中,经常需要遍历集合当中的所有元素,针对这种情况,JDK 官方有提供了一个接口
Java.util.Iterator
Iterator 接口它也是集合当中的一员,但是它与Map,Collection 接口不同
Collection 接口和 Map接口它主要是用来存储元素的,
而 Iterator 主要是用来迭代访问 Collection 与 Map 接口当中的元素,
因此我们也经常把 Iterator 对象称为迭代器.
    
想要遍历 Collection 集合当中的元素
首先需要获取该集合的迭代器,通过迭代器完成迭代操作

获取迭代器的方法

public Iterator iterator()
    获取集合对应的迭代器,用来遍历集合当中的元素

迭代的概念

迭代: collection 集合元素的通用获取方式.
具体实现 : 在每次取元素之前首先判断集合当中有没有元素,
如果有,就把这个元素取出来,继续在判断
如果还有就再一次取出来,一直把集合当中的所有元素全部取出来
我们把这种取出方式在专业术语中称为迭代

Iterator接口的常用API 方法

public E next()
    迭代获取迭代的下一个元素
public Boolean hasNext()
    有容器中还有元素时,返回 true 没有元素返回 false

示例

Iterator 是一个接口,无法直接使用
    需要借助 Iterator 它的实现类对象,获取实现类对象的方式比较特殊
    Collection 接口当中有一个 api 方法 Iterator()
    这个方法就是以迭代器实现类的对象
    
Iterator<E> iterator()
    返回值就是 此 Collecton 元素上要进行迭代器的迭代对象
    
迭代器使用步骤
    1.通过集合的Iterator() 方法获取此集合元素的迭代器实现类对象,
		使用Iterator接口进行接收(多态)
    2.使用Iterator接口中定义的方法hasNext() 判断集合当中还有没有下一个元素
    3.使用Iterator接口当中的方法next() 取出集合当中的下一个元素
在调用 Iterator 接口当中的next 方法之前,迭代器的索引位于第一个元素之前,不指向任何元素
当第一次调用迭代器的next 方法后,迭代器的索引会向后移动一位,指向第一个元素并将该元素返回
当再次调用 next() 方法时,迭代器的索引会指向第二个元素并将该元素返回,以此类推
直到 haSNext() 方法 返回 false,表示迭代器达到了集合的末尾,终止对元素的遍历
    
如果到达末尾后再继续取,会报异常 NoSuchElement
Iterator<E> 接口也是有泛型的,迭代器的泛型是跟着集合走的,集合当中定义的什么类型,迭代器就是什么类型

增强 for 循环

概述

在JDK 1.5 之后出现了新的循环结构,for each 循环
    一般也称为增强 for 循环
    专门用来遍历数组和集合
    它的内部原理其实是有个迭代器 Iterator 
    在迭代过程中不能对集合当中的元素进行增删操作

格式

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

主要用于遍历 Collection 集合或者数组.
    在遍历过程中,一定不要进行增删操作

示例

int[] arr = {1,3,5,7,9,12}
// 使用 for each 循环遍历 arr 数组
for(int i : arr){ // i 代表的是数组当中的每个元素
    sout(i);
}
// Collection 
Collection<String> coll = new ArrayList<>();
coll.add("A");
coll.add("B");
coll.add("C");
for(String s : coll){
    sout(s);
}

备注

目标只能是 Collection 集合或者是数组,增强 for 循环 仅仅是作为遍历操作出现.简化迭代器的操作.

最后

以上就是俊逸香烟为你收集整理的Java 迭代器和增强 for 循环的全部内容,希望文章能够帮你解决Java 迭代器和增强 for 循环所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部