【JDK 8-Lambda】3.1 Java高级核心玩转 JDK8 Lambda 表达式

[一、 什么是函数式编程 ?](#一、 什么是函数式编程 ?)

[二、 什么是lambda表达式?](#二、 什么是lambda表达式?)

[1. 先看两个示例](#1. 先看两个示例)

A.【创建线程】

B.【数组排序-降序】

[2. lambda表达式特性](#2. lambda表达式特性)

[A. 使用场景(前提):](#A. 使用场景(前提):)

[B. 语法](#B. 语法)

[(params) -> expression](#(params) -> expression)

[C. 参数列表](#C. 参数列表)

[D. 方法体](#D. 方法体)

[F. 好处](#F. 好处)


一、 什么是函数式编程 ?

  • 将一个函数(也称"行为")作为一个参数进行传递

  • 面向对象编程是对数据的抽象(各种各样的POJO类),而函数式编程则是对行为的抽象 (将行为作为一个参数进行传递)

  • 支持版本:JDK 8 及以上

二、 什么是lambda表达式?

1. 先看两个示例

A.【创建线程】
  • jdk8之前
java 复制代码
        new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println("【创建线程】jdk8之前");
            }
        }).start();
  • jdk8之后 Lambda表达式
java 复制代码
new Thread(()-> System.out.println("【创建线程】jdk8之后 Lambda表达式")).start();
B.【数组排序-降序】
  • jdk8之前
java 复制代码
        List<String> list = Arrays.asList("aaa", "bbb", "ccc", "ddd");
        Collections.sort(list, new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                return o1.compareTo(o2);
            }
        });

        System.out.println("jdk8之前写法:升序》");
        for (String s : list) {
            System.out.println( s);
        }
  • jdk8之后 Lambda表达式
java 复制代码
        Collections.sort(list, (a, b) -> b.compareTo(a));
        System.out.println("jdk8之后lambda写法:降序》");
        for (String s : list) {
            System.out.println(s);
        }

2. lambda表达式特性

A. 使用场景(前提):
  • 一个接口中只包含一个方法,则可以使用Lambda表达式

  • 这样的接口称之为"函数接口"

B. 语法
(params) -> expression
  • 第一部分为括号内用 逗号分隔的形式参数,参数是函数式接口里面方法的参数

  • 第二部分为一个箭头符号:->;

  • 第三部分为 方法体,可以是表达式和代码块

C. 参数列表
  • 括号中参数列表的数据类型可以省略不写

  • 括号中的参数只有一个,那么参数类型和()都可以省略不写

D. 方法体
  • 如果{}中的代码只有一行,无论有返回值,可以省略 {},return,分号

  • {},return,分号 要一起省略

java 复制代码
        //两种写法等效
        Collections.sort(list, (a, b) -> b.compareTo(a));
        Collections.sort(list, (a, b) -> {
            return b.compareTo(a);
        });

F. 好处

  • Lambda 表达式的实现方式在本质是以匿名内部类的方式进行实现

  • 重构现有髓肿代码,更高的开发效率,尤其是集合Collection操作

相关推荐
guodingdingh1 小时前
软件开发工作问题总结0718
java·开发语言·数据库
咖啡八杯3 小时前
GoF设计模式——解释器模式
java·后端·spring·设计模式
优橙教育3 小时前
5G网优培训 vs Java开发:转行选哪个?
java·开发语言·5g
糖果店的幽灵3 小时前
【DeepAgents 从入门到精通】Context Management 上下文管理
java·人工智能·后端·spring·中间件·langgraph·deepagents
腻害兔4 小时前
【若依项目-产品经理视角】RuoYi-Vue-Pro 源码拆解:字典、短信、邮件、通知——后台系统的“基础设施四件套“!
java·前端·vue.js·产品经理·ai编程
SeaTunnel5 小时前
从 Python Script 地狱到标准化数据集成框架
大数据·开发语言·python·程序员·代码·seatunnel
碎光拾影5 小时前
ARM交叉工具链各工具作用及IMX6ULL平台LED+蜂鸣器裸机程序实现
java·开发语言·数据库
Marst Code6 小时前
(python)2026Plotly 库评估:交互式可视化到底值不值得引入?
开发语言·python
Miao121316 小时前
微服务 API 测试实践:海外某民宿平台如何构建模式驱动测试基础设施
java·开发语言
腻害兔6 小时前
【若依项目-产品经理视角】RuoYi-Vue-Pro 源码拆解:支付模块 yudao-module-pay,一个让产品经理都看懂的支付中台设计
java·前端·vue.js·产品经理·ai编程