IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> JDK8系列之Lambda表达式教程和示例 -> 正文阅读

[Java知识库]JDK8系列之Lambda表达式教程和示例

JDK8系列之Lambda表达式教程和示例

1、Lambada 表达式简介

Lambda 表达式是一种匿名函数,但对Java中的Lambda表达式而已并不完全正确,简单来说,Lambda表达式是一种没有声明的方法,也即没有访问修饰符、返回值声明和名字

与面向对象编程(OOP)相比,面向对象编程侧重于围绕对象发展,而函数式编程语言的侧重点在于函数,lambada表达式为java函数式编码提供了保障。

使用 Lambda 表达式可以使代码变的更加简洁紧凑

2、Lambada表达式语法

表达式语法使用语法:(argument) -> (body)

(arg1, arg2...) -> { body }
(Type arg1, Type arg2...) -> { body }

引用https://www.runoob.com/java/java8-lambda-expressions.html例子:

// 1. 不需要参数,返回值为 5  
() -> 5  
  
// 2. 接收一个参数(数字类型),返回其2倍的值  
x -> 2 * x  
  
// 3. 接受2个参数(数字),并返回他们的差值  
(x, y) -> x – y  
  
// 4. 接收2个int型整数,返回他们的和  
(int x, int y) -> x + y  
  
// 5. 接受一个 string 对象,并在控制台打印,不返回任何值(看起来像是返回void)  
(String s) -> System.out.print(s)
  • 一个 Lambda 表达式可以有零个,一个或多个参数
  • Lambda 表达式的主体可以包含零个、一个或多个语句。
  • 参数的类型可以显式声明,也可以从上下文中推断出来。
  • 多个参数用强制括号括起来并用逗号分隔。空括号用于表示一组空参数
  • 只有一个参数时可以省略括号,主体只有一个表达式时可以省略大括号

3、典型Lambada表达式例子

  • 无参方式
 // example 1 :Runnable 任务,无参方式
Runnable r = () -> System.out.println(Thread.currentThread().getName());
 Thread t = new Thread(r);
 t.start();
  • 单个参数例子
 // example 2:: Comparator 比较器,单个参数例子
 List<Integer> list = new ArrayList<Integer>();
 list.add(1);
 list.add(3);
 list.add(2);
 // 使用comparingInt加上lambada表达式,升序排序
 list.sort(Comparator.comparingInt(a -> a));
 // 变量打印参数
 list.forEach(v -> {System.out.println(v);});
  • 多个参数例子
// example 3: 集合的操作,多个参数例子
Map<String, Integer> items = new HashMap<>(8);
items.put("A", 10);
items.put("B", 20);
items.put("C", 30);
items.put("D", 40);
items.put("E", 50);
items.put("F", 60);
items.forEach((k , v) -> {System.out.println(String.format("key : %s , value : %s" , k , v));});
  • 与函数接口的应用
public static void main(String[] args) {
    // example 4 : 函数接口应用,拓展知识
    // Consumer接口接收一个参数,不返回参数
    consumerFun(1 , v -> {System.out.println(v);});
    // binConsumer 接收两个参数,返回0个参数
   binConsumerFun("hello", "world" , (a ,b) -> {
        System.out.println(a + b);
   });
   // Predicate 接收一个参数,返回一个boolean值
   System.out.println(predicateFun(3 , a -> a ==3));
   // Predicate 接收0个参数,返回一个值
   System.out.println(supplierFun(() -> 1));
}

public static void consumerFun(int value, Consumer<Integer> c) {
    c.accept(value);
}

public static void binConsumerFun(String a , String b, BiConsumer<String , String> binc) {
    binc.accept(a , b);
}

public static boolean predicateFun(int value, Predicate<Integer> pre) {
    return pre.test(value);
}

public static int supplierFun(Supplier<Integer> supplier) {
    return supplier.get();
    }

附录:参考资料

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-07-15 23:43:10  更:2021-07-15 23:43:16 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/5 8:54:26-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码