喂饭式学会Lambda表达式&Stream流-函数式编程

Lambda表达式

对匿名内部类的实现进行简化
基本格式

{
   
   参数列表}->{
   
   代码}

原先

new Thread(new Runnable(){
   
   
	@Override
	public void run(){
   
   
		System.out.println("Hello");
	}
}).start();

更改之后(Lambda只关注参数列表和方法体)

new Thread(()->{
   
   
		System.out.println("Hello");
}).start();

更改条件:当传入的参数是一个接口实现类,且这个实现类只有一个方法需要重写
例1

import java.util.function.IntBinaryOperator;

public class Main {
   
   
    public static void main(String[] args) {
   
   
        //匿名内部类
        int apply = apply(new IntBinaryOperator() {
   
   
            @Override
            public int applyAsInt(int left, int right) {
   
   
                return left * right;
            }
        });
        //或者
        int apply = apply((int left, int right) -> {
   
   return left * right;});
        //或者,省略参数类型
        int apply = apply((left, right) -> {
   
   return left * right;});
        //或者,省略参数类型和return
	    int apply = apply((left, right) -> left * right);

    }

    public static int apply(IntBinaryOperator op) {
   
   
        int sum = 20;
        int sum1 = 10;
        return op.applyAsInt(sum, sum1);
    }

得出:Lambda只关注参数列表和方法内容
例2

public class Main {
   
   
    public static void main(String[] args) {
   
   
        //匿名内部类
        Integer i = typeContext(new Function<String, Integer>() {
   
   
            @Override
            public Integer apply(String s) {
   
   
                return s.length();
            }
        });
        //或者,省略参数类型(Lambda体有括号)
        Integer i = typeContext(s -> {
   
   
            return s.length();
        });
        //或者,省略参数类型、return、参数只有一个省略小括号
        Integer i = typeContext(s -> s.length());
    }

    public static <R> R typeContext(Function<String, R> function) {
   
   
        String s = "123";
        R r = function.apply(s);
        return r;
    }

使用Alt+Enter可以相互转换
在这里插入图片描述
在这里插入图片描述

Stream流

之前的IO流用于读写数据,Stream是对集合的操作
编写可使用Stream流的实体类

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor//无参构造方法
@AllArgsConstructor//有参构造方法
@EqualsAndHashCode//编译时为你生成正确的、符合约定的 equals() 和 hashCode() 方法
public class Author {
   
   
    private</
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值