迭代器与增强型for

迭代器与增强型for

学习笔记文档

作者--Alianer


主要参考

百度CSDN菜鸟教程

迭代器

Java Iterator(迭代器)不是一个集合,它是一种用于访问集合的方法,可用于迭代 ArrayList 和 HashSet 等集合。Iterator 是 Java 迭代器最简单的实现,ListIterator 是 Collection API 中的接口, 它扩展了 Iterator 接口。

  • 迭代器 it 的两个基本操作是 next 、hasNext 和 remove。
  • 调用 it.next() 会返回迭代器的下一个元素,并且更新迭代器的状态。
  • 调用 it.hasNext() 用于检测集合中是否还有元素。
  • 调用 it.remove() 将迭代器返回的元素删除。

简单实现

正常获取迭代器然后遍历,迭代器只能使用一次

        ArrayList<Integer> b = new ArrayList<>();
        b.add(4);
        b.add(3);
        b.add(2);
        b.add(1);
//        获取迭代器
        Iterator<Integer> it = b.iterator();
//        迭代器返回
        while (it.hasNext()){
            System.out.println(it.next());
        }

这样写的循环,相当于把获取迭代器放入循环,可以多次使用

//        迭代器迭代,快捷键itco
        for (Iterator<Integer> iterator = b.iterator(); iterator.hasNext(); ) {
            Integer next = iterator.next();
            System.out.println(next);
        }

对比foreach:

for (Integer integer : b) {
    System.out.println(integer);
}

foreach

Java5 引入了一种主要用于数组的增强型 for 循环,也叫foreach

for(元素类型t 元素变量x : 遍历对象obj){ 
     引用了x的java语句; 
} 

核心:

  • Java中的foreach是一个用于迭代集合或流,且可以对迭代的每个元素进行特定操作的实用方法
  • 增强for循环,内部使用的是迭代器,所以它的操作对象是数组和可以使用迭代器的集合。遍历时只能查看,无法修改、删除、增加。

简单实现

遍历数组:

//创建数组
int[] a = {1,2,4,3};
//可以使用快捷键,输入iter回车或者直接输入a.for回车
for (int i : a) {
    System.out.println(i);
}

遍历多维数组:

        int[][] arr = {{1,2,3},{3,2,1}};
        for (int[] ints : arr) {
            for (int i : ints) {
                System.out.print(i + " ");
            }
        }

遍历集合:

//        创建ArrayList集合
        ArrayList<Integer> b = new ArrayList<>();
        b.add(4);
        b.add(3);
        b.add(2);
        b.add(1);
//        遍历输出
        for (Integer integer : b) {
            System.out.println(integer);
        }

idea的快捷键

贴出idea的有关for的快捷键,可以自己手动定义修改的

在这里插入图片描述

横向对比

  • foreach的语法简洁,不需要关注起始和终止值
  • foreach适用于循环次数未知,或者计算循环次数比较麻烦情况下使用效率更高,但是更为复杂的一些循环还是需要用到for循环效率更高。
  • 以数据结构来看,for循环适合顺序表等可以随机查找的结构,而迭代器的查找方法是next()适合链表等顺序查询的结构
  • 如果集合的对象是null,则增强型的for对其操作会出现异常
  • 迭代器对集合遍历时候不可以对集合进行修改,使用迭代器遍历元素时,除了查看之外,只能做remove操作
  • 增强for循环,内部使用的是迭代器,所以它的操作对象是数组和可以使用迭代器的集合。遍历时只能查看,无法修改、删除、增加。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值