千锋教育-做有情怀、有良心、有品质的职业教育机构

400-811-9990
手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

上海
  • 北京
  • 郑州
  • 武汉
  • 成都
  • 西安
  • 沈阳
  • 广州
  • 南京
  • 深圳
  • 大连
  • 青岛
  • 杭州
  • 重庆
当前位置:重庆千锋IT培训  >  技术干货  >  面试题分享——Lambda表达式和常用的函数式接口

面试题分享——Lambda表达式和常用的函数式接口

来源:千锋教育
发布人:lxl
时间: 2023-03-27 12:00:14

  一. 什么是Lambda表达式

  Lambda表达式是JDK1.8中新增的一种方式,用于替代匿名内部类,该表达式可以让开发人员更加关注于具体需要传递的方法,而不是因为需要传递一个方法而创建一个对象。

  二. Lambda表达式

  基本语法

  Lambda省去⾯向对象的条条框框,格式由3个部分组成:

  •   参数部分
  •   箭头
  •   代码块

  比如:(参数类型 参数名称) -> { 代码语句 }

  格式说明

  •   ⼩括号内的语法与传统⽅法参数列表⼀致:⽆参数则留空;多个参数则⽤逗号分隔;
  •   -> 是新引⼊的语法格式,代表指向动作;
  •   ⼤括号内的语法与传统⽅法体要求基本⼀致。

  Lambda的省略格式

  所谓的Lambda表达式的省略原则是:可推导即可省略。

  Lambda强调的是“做什么”⽽不是“怎么做”,所以凡是可以根据上下⽂推导得知的信息,都可以省略。

  3.1 省略规则

  在Lambda标准格式的基础上,使⽤省略写法的规则为:

  小括号内参数的类型可以省略;

  如果小括号内有且仅有一个参,则⼩括号可以省略;

  如果大括号内有且仅有一个语句,则⽆论是否有返回值,都可以省略⼤括号、return关键字及语句、分号。

  Lambda的使用前提

  Lambda的语法非常简洁,完全没有面向对象复杂的束缚,但是使用时有一个问题需要特别注意:

  使用Lambda必须具有接⼝,且要求接⼝中有且仅有⼀个抽象⽅法。 ⽆论是JDK内置的

  Runnable 、 Comparator 接⼝还是自定义的接⼝,只有当接口中的抽象⽅法存在且唯一时,才可

  以使用Lambda。

  使用Lambda必须具有上下⽂推断。 也就是⽅法的参数或局部变量类型必须为Lambda对应的接⼝

  类型,才能使用Lambda作为该接⼝的实例。

  常用函数式接口

  JDK提供了⼤量常⽤的函数式接⼝以丰富Lambda的典型使⽤场景,它们主要在 java.util.function

  包中被提供. 常用的函数式接口包括以下四个。

  5.1 Supplier接⼝

  java.util.function.Supplier接⼝仅包含⼀个⽆参的⽅法: T get() 。⽤来获取⼀个泛型参数,可以指定类型的对象数据。由于这是⼀个函数式接⼝,这也就意味着对应的Lambda表达式需要“对外提供”⼀个符合泛型类型的对象数据。

  5.1.1 基本使用方式如下:

图片1

图片2

  5.2 Consumer接⼝

  java.util.function.Consumer接⼝则正好与Supplier接⼝相反,它不是生产一个数据,一是消费一个数据,其数据类型由泛型决定。

  Consumer 接⼝中包含抽象方法 void accept(T t) ,意思是说消费一个执广泛型的数据

  Consumer 接⼝中包含默认方法:andThen

  如果一个方法的参数和返回值全都是 Consumer 类型,那么就可以实现效果:消费数据的时候,首先做一个操作, 然后再做另⼀个操作,实现组合。用这个方法就是 Consumer 接口中的default方法 andThen

  5.2.1 下面是JDK的源代码:

图片3

图片4

图片5

  5.3 Predicate接⼝

  有时候我们需要对某种类型的数据进行判断,从而得到一个boolean值结果。这时可以使

  ⽤java.util.function.Predicate接⼝。

  Predicate 接⼝中包含一个抽象方法: boolean test(T t)

  该接口也存在三个默认的方法,分别是and 、 or 和negate, 分别表示与 、或 、非三种逻辑处理。

  5.3.1 接口代码示例:

图片6

图片7

  5.4 Function接⼝

  java.util.function.Function<t,r>接⼝⽤来根据⼀个类型的数据得到另一个类型的数据,前者称为前置条件,后者称为后置条件。

  Function 接⼝中最主要的抽象⽅法是: R apply(T t) ,根据类型T的参数获取类型R的结果。

  Function接⼝中有一个默认的andThen方法,来进行组合操作。

  5.4.1 基本使用方式如下

图片10

图片8

图片9


声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。

猜你喜欢LIKE

java的输入语句—— Scanner类

2023-05-04

java数据库操作常识事务的四大特性

2023-05-04

DML数据操作之增加或删除数据

2023-05-04

最新文章NEW

socket是什么?有什么作用?

2023-05-04

Java常量定义是什么

2023-04-28

一分钟带你学多线程

2023-04-28

相关推荐HOT

更多>>

快速通道 更多>>

最新开班信息 更多>>

网友热搜 更多>>