首页 > 其他分享 >Lambda 表达式各种用法,你都会了吗

Lambda 表达式各种用法,你都会了吗

时间:2023-11-14 12:57:28浏览次数:19  
标签:System 用法 参数 println out 表达式 Lambda

公众号「架构成长指南」,专注于生产实践、云原生、分布式系统、大数据技术分享。

前言

Lambda表达式是 Java 8 中引入的最有影响力的功能之一。它们通过允许简洁而优雅地创建匿名函数来实现 Java 中的函数式编程。在这篇博文中,我们将探讨编写 lambda 表达式的各种形式。

概述

lambda 表达式是可以具有参数和主体的匿名函数。
正文可以包含零行、一行或多行代码,Lambda 表达式可以分配给类型为函数式接口(具有单个抽象方法的接口)的变量。

Lambda 表达式的各种编写形式

Java 中的Lambda 表达式 可以以各种形式编写,具体取决于它们所实现的函数式接口的抽象方法的签名。
以下是编写 lambda 表达式的一些不同方法:

1.无参数,无返回值:

如果抽象方法不带参数且不返回值,则 可以使用空括号和主体编写lambda 表达式:

() -> System.out.println("Hello, World!");

2. 单参数,无类型声明:

如果抽象方法采用单个参数,则可以省略参数周围的括号,并且可以推断类型:

s -> System.out.println(s);

3. 单参数,带类型声明:

(String s) -> System.out.println(s);

4. 多个参数:

如果抽象方法采用多个参数,则必须在参数两边加上括号。类型可以推断或显式声明:

(a, b) -> a + b;
(int a, int b) -> a + b;

5、有参数并且有返回值声明

如果 lambda 的主体由单个返回值的表达式组成,则可以直接编写:

(int a, int b) -> a + b;

如果主体由多个语句组成,则必须包含大括号并使用 return 语句:

(int a, int b) -> {
    int sum = a + b;
    return sum;
};

6.无参数,返回值:

如果抽象方法不带参数但有返回值,可以这样写:

() -> 42;

示例:各种形式的 Lambda 表达式

这是一个简单的 Java 程序,演示了各种形式的 Lambda 表达式

package com.example.spring.demo;

public class LambdaExample {

    public static void main(String[] args) {
        //无参数,无返回值:
        Runnable noParametersNoReturnValue = () -> System.out.println("Hello, World!");
        noParametersNoReturnValue.run(); // 输出: Hello, World!

        //单参数,无类型声明:
        java.util.function.Consumer<String> singleParameterNoType = s -> System.out.println(s);
        singleParameterNoType.accept("Single Parameter, No Type!"); // 输出: Single Parameter, No Type!
        //单参数,带类型声明:
        java.util.function.Consumer<String> singleParameterWithType = (String s) -> System.out.println(s);
        singleParameterWithType.accept("Single Parameter with Type!"); // 输出: Single Parameter with Type!

        //多个参数,无类型声明
        java.util.function.BiFunction<Integer, Integer, Integer> multipleParametersTypeInferred = (a, b) -> a + b;
        System.out.println(multipleParametersTypeInferred.apply(5, 10)); // 输出: 15

        //多个参数,有类型声明
        java.util.function.BiFunction<Integer, Integer, Integer> multipleParametersWithType = (Integer a, Integer b) -> a + b;
        System.out.println(multipleParametersWithType.apply(5, 10)); // 输出: 15

        // 多个参数,并且多行实现
        java.util.function.BiFunction<Integer, Integer, Integer> multipleStatements = (a, b) -> {
            int sum = a + b;
            return sum;
        };
        System.out.println(multipleStatements.apply(5, 10)); // 输出: 15

        // 无参数,但是有返回值
        java.util.function.Supplier<Integer> noParametersReturnValue = () -> 42;
        System.out.println(noParametersReturnValue.get()); // 输出: 42
    }
}

输出

Hello, World!
Single Parameter, No Type!
Single Parameter with Type!
15
15
15
42

结论

lambda表达式的形式,具体取决于参数的数量和类型、是否包含显式类型声明以及主体是由单个表达式还是多个语句组成,Java 中Lambda 表达式的灵活性,使我们能够编写简洁且富有表现力的代码。

标签:System,用法,参数,println,out,表达式,Lambda
From: https://www.cnblogs.com/waldron/p/17831356.html

相关文章

  • lower_bound( )和upper_bound( )的常见用法
    lower_bound()和upper_bound()都是利用二分查找的方法在一个排好序的数组中进行查找的。lower_bound(begin,end,num):从数组的begin位置到end-1位置二分查找第一个大于或等于num的数字,找到返回该数字的地址,不存在则返回end。通过返回的地址减去起始地址begin,得到找到数......
  • 常用的Linux命令;Linux常用命令用法及实现方式
    1.系统工作命令(1) echo命令:echo命令用于在终端设备上输出字符串或变量提取后的值,语法格式为“echo[字符串][$变量]”。(2) date命令:date命令用于显示或设置系统的时间与日期,语法格式为“date[+指定的格式]”。(3) timedatectl命令:timedatectl命令用于设置系统的时间,英文全称......
  • Java表达式引擎选型调研分析
    1简介我们项目组主要负责面向企业客户的业务系统,企业的需求往往是多样化且复杂的,对接不同企业时会有不同的定制化的业务模型和流程。我们在业务系统中使用表达式引擎,集中配置管理业务规则,并实现实时决策和计算,可以提高系统的灵活性和响应能力,从而更好地满足业务的需求。举个简......
  • HTML03(函数,DOM,jQuery,正则表达式)
    基础js是弱类型的脚本语言;在浏览器的控制台打印:console.log();定义对象varobj={};对象的属性名默认就是字符串;函数前置声明varresult=fun(12,23.44);console.log(result);functionfun(a,b){//参数不需要声明类型retu......
  • electron的axios用法
    当在Electron中使用axios库时,你需要在渲染进程的代码中使用它来发起HTTP请求。以下是一个完整的示例,展示了如何在Electron中导入并使用axios库: index.html: ```html<!DOCTYPEhtml><html><head> <title>ElectronAxiosExample</title></head><body> <......
  • 一文读懂Cron表达式
    Cron表达式是一种用于定义计划任务的时间表达式,它通常用于Unix和类Unix系统中的Cron任务调度程序。Cron表达式由5个或6个字段组成,每个字段代表一个时间单位。以下是Cron表达式的字段及其含义:分钟(0-59):表示任务在每小时的哪一分钟执行。小时(0-23):表示任务在每天的哪一小时执行。月份中......
  • crontab用法
    crontab用法crontab可以定时执行某些操作,很实用。通常Linux系统都已经自带。用法$crontab-hcrontab:invalidoption--'h'crontab:usageerror:unrecognizedoptionusage:crontab[-uuser]filecrontab[-uuser][-i]{-e|-l|-r}(de......
  • java基础:表达式的自动类型转换
    1.表达式的自动类型转换:(1)在表达式中,小范围的变量,会自动转换为表达式中较大范围的类型,再参与运算代码:packagecom.itheima.type;publicclassType1{publicstaticvoidmain(String[]args){bytea=10;intb=20;longc=30;lon......
  • Python requirements.txt安装用法介绍
    一、什么是requirements.txt文件在Python项目开发中,通常需要安装多个Python包。当我们在新的项目中启动一个虚拟环境,并且想要在新的虚拟环境中安装之前的依赖包时,就可以使用requirements.txt文件来完成。这个文件包含了所有需要安装的依赖包和其版本号。requirements.txt文件可以在......
  • c#中this的几种用法
    一、区分当前类的对象这个是常用的功能,如下图,熟悉的可以直接跳过,假设当前类有一个全局变量和当前方法中的参数名一模一样的时候,VisualStudio就会提示异常,因为系统不知道你到底要给谁赋值,按C#的编程规范来说,全局变量最好第一个字母用大写,当然你也可以用小写,在遇到下面的这种情......