【Java】Lambda表达式遍历

一、总述

这种方式是得益于JDK8开始的新技术Lambda表达式,提供了一种更简单、更直接的遍历集合的方式。

它利用的是 forEach() 就可以遍历了。

image-20240425210225634

二、代码示例

//1.创建集合并添加元素
Collection<String> coll = new ArrayList<>();
coll.add("zhangsan");
coll.add("lisi");
coll.add("wangwu");

我们先使用匿名内部类的形式来进行遍历,然后再改成Lambda表达式。

首先来看看 forEach() 的形参 Consumer 是什么,由于我们现在使用的是多态的方式创建对象,因此在看源码的时候,需要去选择它的实现类。

选中 forEach(),然后右键 Go To ——> implementation(s)

image-20240425211046369

然后选中 ArrayList 即可。

image-20240425211135888

然后选择形参 Comsumer ctrl + b

image-20240425211221315

此时就发现了,它是一个接口,并且这个接口上加上了 @FunctionalInterface,表示它是一个函数式接口。

image-20240425211322885
coll.forEach(new Consumer<String>() {
    @Override
    // 这里的 s 依次表示集合中的每一个数据
    public void accept(String s) {
        // 因此如果我们需要对遍历出的数据进行一些操作,直接操作 s 就行了
        System.out.println(s);
    }
});

接下来,我们来看一下 forEach() 的底层源码,我们在查看 forEach() 源码的时候,只需要看下面选中的两行就行了。

这一行 int i = 0; i < size; i++,这一行就相当于一个 普通for 在遍历集合,因此这个 i 依次表示集合中的每一个索引,通过索引就可以将集合中每一个元素获取到,下面的 elemetAt(es, i) 就是通过索引获取到集合里面的每一个元素。

然后将元素交给 accept() 方法去进行处理,这个方法就是我们刚刚自己写的 accept()

image-20240425211654084

接下来将匿名内部类转化为Lambda表达式就行了。

//lambda表达式
coll.forEach(s -> System.out.println(s));

三、总结

1、Collection是单列集合的顶层接口,在这个接口中所有的方法都被 ListSet 系列集合共享。

2、常见成员方法

addclearremovecontainsisEmptysize

3、三种同样的遍历方式

  • 迭代器:在遍历的过程中需要删除元素,请使用迭代器
  • 如果在遍历的过程中不需要删除,仅仅只想遍历,那么使用 增强for或Lambda表达式
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值