【达内课程】Java 中的 foreach 和 forEach()

foreach格式循环

foreach 语句是数组遍历、集合迭代器遍历的语法简化,但是 foreach 语句并不能完全取代 for 语句(如果要是引用数组或者集合的索引,foreach就没法做到了)。

foreach 并不是一个关键字,习惯上将这种特殊的 for 语句格式称之为foreach语句。

数组的循环

之前我们学过数组 a 的循环:

		int[] a = {1, 2, 3, 4, 5};
        for (int i = 0; i < a.length; i++) {
            System.out.println("" + a[i]);
        }

我们改用 foreach 循环

		int[] a = {1, 2, 3, 4, 5};
        for (int s : a) {
            System.out.println("" + s);
        }

集合的循环

我们之前学过 List 的集合,可以使用普通的 for 循环,但是效率低,我们这里使用 迭代器遍历。

		LinkedList<String> list = new LinkedList<>();
        list.add("aa");
        list.add("bb");
        list.add("cc");
        for (Iterator<String> it = list.iterator(); it.hasNext(); ) {
            System.out.println(it.next());
        }

我们改用 foreach 循环

		LinkedList<String> list = new LinkedList<>();
        list.add("aa");
        list.add("bb");
        list.add("cc");
        for (String s : list) {
            System.out.println(s);
        }

Map的循环

		Map<String, String> map = new HashMap<String, String>();
        map.put("0", "毫米");
        map.put("1", "厘米");
        map.put("2", "分米");
        map.put("3", "米");
        for (Map.Entry<String, String> entry : map.entrySet()) {
            System.out.println("key=" + entry.getKey() + ",value=" + entry.getValue());
        }

局限性
如果要引用数组或者集合的索引,foreach 语句无法做到,foreach 仅仅老老实实地遍历数组或者集合一遍。

总结
1、foreach 语句是 for 语句特殊情况下的增强版本,简化了编程,提高了代码的可读性和安全性(不用怕数组越界)。提倡能用 foreach 的地方就不要再用 for 了。
2、在用到数组索引的情况下,foreach 显得力不从心,这个时候是用 for 语句的时候了。
3、foreach一般结合泛型使用

forEach() 方法

forEach() 方法用于遍历动态数组中每一个元素并执行特定操作。

数组循环
举例:数组每个元素乘 10 并输出

		ArrayList<Integer> numbers = new ArrayList<>();
        numbers.add(1);
        numbers.add(2);
        numbers.add(3);
        numbers.add(4);
        numbers.forEach((e) -> {
            e = e * 10;
            System.out.print(e + " ");
        });

运行结果:
在这里插入图片描述
以上程序中,我们将匿名函数 lambda 的表达式作为 forEach() 方法的参数传入,lambda 表达式将动态数组中的每个元素乘以 10,然后输出结果。

集合循环

		LinkedList<String> list = new LinkedList<>();
        list.add("aa");
        list.add("bb");
        list.add("cc");
        list.forEach(v -> System.out.println(v));

Map循环

		Map<String, String> map = new HashMap<String, String>();
        map.put("0", "毫米");
        map.put("1", "厘米");
        map.put("2", "分米");
        map.put("3", "米");
        map.forEach((k, v) -> {
            System.out.println("key:" + k + "\tvalue:" + v);
        });

使用 forEach() 方法的主要优点是在并行流上调用它时,在这种情况下,我们不需要编写代码即可并行执行。使用 forEach + Lambda 表达式之后,代码量减少了很多。

二者差别不大,具体可以看 foreach和list.ForEach的区别

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值