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 循环 仅仅是作为遍历操作出现.简化迭代器的操作.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值