Java8深入剖析学习记录

本文深入探讨了Lambda表达式的概念与应用,解释了其作为匿名函数或闭包的作用,并通过具体示例展示了如何在Java中使用Lambda表达式简化代码。同时,文章还介绍了Java8中引入的新特性,包括函数式接口、方法引用和流操作,以及它们如何与Lambda表达式结合使用,提高编程效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么是lambda表达式?
用于指定匿名函数或者闭包的运算符

为什么用lambda表达式?
在这里插入图片描述

public static void main(String[] args) {
        JFrame jframe = new JFrame("My JFrame");
        JButton jButton = new JButton("My JButton");

// 这里不用指定类型,因为有类型推断机制,但是在根据上下文推断不出来的时候,就需要自己定义了
        jButton.addActionListener(event -> {
            System.out.println("Button Pressed!");
            System.out.println("hello world");
            System.out.println("executed");
        });

        jframe.add(jButton);
        jframe.pack();
        jframe.setVisible(true);
        jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

在这里插入图片描述
此处表示参数类型,为Integer或者Integer的父类,Consumer是Java8一个新的接口。
在这里插入图片描述Consumer代表一个操作,接受一个参数,不返回任何结果。有一个副作用,就是可能会修改这个接受的参数。接收参数i,也可以声明类型Integer i
在这里插入图片描述

在这里插入图片描述Consumer是被@FunctionalInterface标识的接口
函数式接口:一个接口有且只有一个抽象方法。
函数接口的实例可以由lambda函数,方法引用,或者是构造方法引用来创建。
在这里插入图片描述

在这里插入图片描述上图是线程类接口,1.8之后也成为了函数接口,所以可以使用lambda表达式

在这里插入图片描述在这里插入图片描述加了注解,只有一个抽象方法的时候,如果重写Objece中的方法,那么不会造成影响,原因是,因为这个类,他自己本身也是有Object的默认方法的。会将这个方法继承过来。

// 左边是参数,右边是方法体,没有参数,()不能省略,下图说明,是对象而不是函数,用myInterface 引用来接收。这个特殊的对象类型,就是函数式接口
MyInterface myInterface = () -> {
            System.out.println("hello");
        };
// (p1,p2,p3) -> {
//       System.out.println("hello");
//    }

在这里插入图片描述之前的迭代都是属于外部迭代,外部迭代器去迭代。比如for循环。
与之对应的内部迭代,在集合内部进行迭代。

第二种方式:
方法引用来创建函数式接口的实例:

// :: 是对Consumer接口的一个实现
 list.forEach(System.out::println);

下图,第一种是串行流,第二种是并行流,多线程的方式效率更高一些。
在这里插入图片描述源 调用map方法,给定一个输入,返回一个输出,输入为函数式接口。
map映射,给定一个值,映射成另外一个值。也是返回stream。
在这里插入图片描述

// 两种方式
list.stream().map(item -> item.toUpperCase()).forEach(item -> System.out.println(item));
// 方法引用,根据类和方法名进行推断
list.stream().map(String::toUpperCase).forEach(item -> System.out.println(item));

T输入类型 (调用方法的对象)R输出类型(方法的返回值) result
在这里插入图片描述Function 接受一个参数,返回一个结果。
接口里可以定义默认方法也可以定义静态方法。

编写规范
在这里插入图片描述

在这里插入图片描述排序
一种是表达式 语法
一种是语句 语法
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值