当前位置: 首页 > news >正文

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

一、 什么是函数式编程 ?

二、 什么是lambda表达式?

1. 先看两个示例  

A.【创建线程】

B.【数组排序-降序】

2. lambda表达式特性

A. 使用场景(前提):

B. 语法

(params) -> expression

C. 参数列表

D. 方法体

F. 好处


一、 什么是函数式编程 ?

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

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

  • 支持版本:JDK 8 及以上

二、 什么是lambda表达式?

1. 先看两个示例  

A.【创建线程】

  • jdk8之前

        new Thread(new Runnable() {@Overridepublic void run() {System.out.println("【创建线程】jdk8之前");}}).start();
  • jdk8之后 Lambda表达式

new Thread(()-> System.out.println("【创建线程】jdk8之后 Lambda表达式")).start();

B.【数组排序-降序】

  •  jdk8之前

        List<String> list = Arrays.asList("aaa", "bbb", "ccc", "ddd");Collections.sort(list, new Comparator<String>() {@Overridepublic int compare(String o1, String o2) {return o1.compareTo(o2);}});System.out.println("jdk8之前写法:升序》");for (String s : list) {System.out.println( s);}
  • jdk8之后 Lambda表达式

        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,分号 要一起省略

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

F. 好处

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

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

http://www.lryc.cn/news/169899.html

相关文章:

  • 【C#】XML的基础知识以及读取XML文件
  • Immutable.js简介
  • C语言进阶教程(位操作和进制数的表示)
  • Loguru:功能强大、简单易用的Python日志库
  • idea之maven的安装与配置
  • 【最新面试问题记录持续更新,java,kotlin,android,flutter】
  • 面试:经典问题解决思路
  • CG MAGIC分享3ds Max卡顿未保存处理方法有哪些?
  • [python 刷题] 238 Product of Array Except Self
  • UG NX二次开发(C#)-计算直线到各个坐标系轴向的投影角度
  • C# ComboBox 和 枚举类型(Enum)相互关联
  • Linux CentOS7 tree命令
  • 软件设计模式系列之九——桥接模式
  • 构造函数的调用规则
  • 第十章:枚举类与注解
  • ChatGPT:字符串操作问题——提取包含括号的字符串中的题干内容
  • jvm中对象创建、内存布局以及访问定位
  • C基础-操作符详解
  • 时序预测 | MATLAB实现BO-BiGRU贝叶斯优化双向门控循环单元时间序列预测
  • 【深度学习实验】线性模型(五):使用Pytorch实现线性模型:基于鸢尾花数据集,对模型进行评估(使用随机梯度下降优化器)
  • ADB底层原理
  • etcd之读性能主要影响因素
  • 【Stable Diffusion】安装 Comfyui 之 window版
  • Ansys Zemax | 如何建立二向分色分光镜
  • Mybatis学习笔记8 查询返回专题
  • 【测试开发】基础篇 · 专业术语 · 软件测试生命周期 · bug的描述 · bug的级别 · bug的生命周期 · 处理争执
  • ​bing许少辉乡村振兴战略下传统村落文化旅游设计images
  • 第三十一章 Classes - 继承规则
  • 华为云HECS安装docker并安装mysql
  • MQ - 04 基础篇_存储_消息数据和元数据的存储设计