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

Java核心技术知识点笔记—lambda表达式

前言:多年以前,计算机还未问世,逻辑学家Alonzo Church想要形式化地表示能有效计算的数学函数。(奇怪的是,有些函数已经知道是存在的,但却没人知道该如何计算。)他使用了希腊字母lambda(λ)来标记参数。

1、lambda表达式:是一个代码块,以及必须传入代码的变量规范。

1.1、lambda表达式的形式:(参数)->{表达式}

(String first, String second) -> {
            System.out.print(first.length() + second.length());
        }

(1)括号中的参数就是表达式所需的参数,要注意的是,即使表达式没有参数,仍然需要提供括号,像无参方法一样。

() -> {System.out.print("Lambda"); }

(2)如果可以推导出参数的类型,则可以忽略其类型。

Comparator<String> comp = (first, second) -> first.length() - second.length();

(3)如果方法只有一个参数,且参数类型可以推导,那么可以连括号都省略。

ActionListener listener = event->System.out.print("Action");

(4)无需指定lambda表达式的返回类型,上下文总是会推导出lambda的返回类型。

2、函数式接口:对于只有一个抽象方法的接口,需要这种接口的对象时,可以提供一个lambda表达式。这种接口成为函数式接口(functional interface)。

常用函数式接口

函数式接口参数类型返回类型抽象方法名描述其他方法
Runnablevoidrun作为无参数或返回值的运行
Supplier<T>Tget提供一个T类型的值
Consumer<T>Tvoidaccept处理一个T类型的值andThen
BiConsumer<T,U>T,Uvoidaccept处理T和U类型的值andThen
Function<T,R>TRapply有一个T类型参数的函数compose,andThen,identity
BiFunction<T,U,R>T,URapply有T和U类型参数的函数andThen
UnaryOperator<T>TTapply类型T上的一元操作符compose,andThen,identity
BinaryOperator<T>T,TTapply类型T上的二元操作符andThen,maxBy,minBy
Predicate<T>Tbooleantest布尔值函数and,or,negate,isEqual
BiPredicate<T,U>T,Ubooleantest有两个参数的布尔值函数and,or,negate


http://www.kler.cn/a/5407.html

相关文章:

  • 常用的数据结构API概览
  • 重庆大学软件工程复试怎么准备?
  • 【ArcGISPro/GeoScenePro】检查多光谱影像的属性并优化其外观
  • 强化学习常用库的版本对应关系
  • 【每日学点鸿蒙知识】广告ID、NFC手机充值、CSS支持语法、PC与模拟器交互、SO热更新等
  • ip属地的信息准确吗?ip归属地不准确怎么办
  • 【Python】进程
  • 【JavaScript】45_间接修改css样式
  • java基础面试题(五)
  • Spring考试题
  • 2.3 数据变换
  • 第三天虚拟机篇
  • 【华为OD机试真题JAVA】英文输入法单词联想功能
  • 华为OD机试用java实现 -【最优调度策略】
  • 设计模式之观察者模式
  • 这几种常见的 JVM 调优场景
  • Java日期查询
  • C++进阶 — 特殊类设计
  • 基于文件完整性校验的恶意代码检测器设计
  • 使用JS+HTML+CSS模拟操作系统
  • 全程序优化
  • Android 9.0 系统关机动画的功能实现
  • EM7电磁铁的技术参数
  • C/C++ Struct用法详解
  • T-SQL考试题
  • 信号 捕捉