Java-lambda表达式与流处理

本文介绍了Java中的Lambda表达式,它是函数式编程特性,用于简化代码并适用于函数式接口。文章详细解释了Lambda表达式的语法、使用场景以及与匿名内部类的区别,展示了其在遍历集合如Set中的应用和简写规则。
摘要由CSDN通过智能技术生成

一、lambda表达式

在Java中,Lambda表达式是一种函数式编程的特性,它允许以简洁的语法编写函数或操作,而无需显式创建匿名类。Lambda表达式在Java 8中引入,是使Java更适应现代编程风格和需求的重要工具。lambda表达式可以代替简单的匿名内部类的实现。

lambda表达式的一个重要作用就是能够简写代码。

需要注意的是,lambda表达式只适用于函数式接口,也就是接口内只定义了一个方法的接口。

如果一个接口是函数式接口一般会使用 @FunctionalInterface 来表示。

例如:forEach遍历中的接口就是一个函数式接口。

lambda表达式语法


(parameters) -> { statements; }
1
parameters:这是Lambda表达式的参数列表。参数类型是可选的,也可以直接推断。例如,a -> a + 1 和 (int a) -> a + 1 是等效的。
->:这是Lambda操作符,将参数列表和Lambda体分开。
expression:这是Lambda体的单个表达式。如果Lambda体包含多个语句,则它们必须被大括号 {} 包围。

需要了解的是在实现 lambd表达式时可以按规则来简写lambda表达式:

在小括号()内,如果只有一个形参,或者形象类型只有一种,那么形参类型可以省略
在大括号内{},如果只有一条语句,那么 大括号可以省略、return可以省略、分号也可以省略。
以下通过具体案例来说明这个简写规则。

首先先定义一个set集合,我们都知道set集合是无索引的,那么set集合常规的遍历方式只有迭代器遍历与forEach遍历。

Set<String> s=new HashSet<>();
// set集合:无序、不重复、无索引
s.add("张三");
s.add("李四");
s.add("王五");
1
2
3
4
5
1、迭代器遍历

// 迭代器方式遍历set集合
        // 创建迭代器
        Iterator<String> it = s.iterator();
        // 判断当前迭代器指针是否指向最后一个位置
        while(it.hasNext()){
            // 返回迭代器指针当前指向的元素,并且移动迭代器指针
            String str = it.next();
            System.out.println(str);
        }
1
2
3
4
5
6
7
8
9
2、forEach遍历

// foreach循环遍历set集合
        for(String i : s){
            System.out.println(i);
        }
1
2
3
4
以上两种遍历方式都能实现遍历set集合的要求,但是代码还是不够简洁,以下我们来通过从匿名内部类到lambda表达式的改进。

匿名内部类

//完整版
        s.forEach(new Consumer<String>() {
            @Override
            public void accept(String s) {
                System.out.println(s);
            }
        });
1
2
3
4
5
6
7
lambda表达式

s.forEach((String i) -> {
            System.out.println(i);
});
1
2
3
根据简化规则的lambda表达式

s.forEach((o1) -> System.out.println(o1) ); //极简版
1
以上效果都是一样的,但是可以看到lambda表达式的代码结构清晰了许多,这就是lambda表达式的作用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值