Notes22 day22-JDK新特性

本文介绍了JavaJDK中的新特性,包括Lambda表达式、面向对象与函数式编程思想,重点讲解了函数式接口的定义及使用,以及Stream流的获取方式、中间操作、终结操作和收集操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

day22-JDK新特性

Lambda表达式

面象对象思想:

做一件事情,找一个能解决这个事情的对象,调用这个对象的方法,完成事情

函数式编程思想:

只要能获取到结果,谁去做的,怎么做的都不重要,重视的是结果,不重视过程

函数式接口

有且仅有一个抽象方法的接口,也可以有默认方法,静态方法,私有方法

函数式接口的使用

一般用作方法的参数和返回值类型

Lambda标准格式

格式

(形式参数) -> { 代码块 }

格式解析

  • 形式参数:如果有多个参数,参数之间用逗号隔开;如果没有参数,留空即可

  • ->:由英文中画线和大于符号组成,固定写法。代表指向动作

  • 代码块:是我们具体要做的事情,也就是以前我们写的方法体内容

@FunctionalInterface

检测该接口是不是一个函数式接口

练习

eg:

无参无返回值

方式一 : show(()->{

System.out.println();

})

方式二:show(()-> System.out.println())

public void show(函数接口 s){

s.函数接口的抽象方法();

}

一个参无返回值

方式一:show( a ->{

System.out.println();

})

方式二:show( a -> System.out.println())

public void show(函数接口 s){

s.函数接口的抽象方法(a);

}

下面只举方式二的多参有返回值的例子

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

public void show(函数接口 s){

数据类型 nn = s.函数接口的抽象方法(a,b);

}

方法引用

在使用Lambda表达式时,经常会看到双冒号(::)符号的使用,这个符号表示方法引用

Stream流

==Stream流的好处==

  • 直接阅读代码的字面意思即可完美展示无关逻辑方式的语义:获取流、过滤姓张、过滤长度为3、逐一打印

  • Stream流把真正的函数式编程风格引入到Java中

获取Stream流的三种方式

  • Collection体系集合

    使用默认方法stream()生成流, default Stream<E> stream()

  • Map体系集合

    把Map转成Set集合,间接的生成流

  • 数组

通过Stream接口的静态方法of(T... values)生成流

Stream流中间操作方法

常见方法
方法名说明
Stream<T> filter(Predicate predicate)用于对流中的数据进行过滤
Stream<T> limit(long maxSize)返回此流中的元素组成的流,截取前指定参数个数的数据
Stream<T> skip(long n)跳过指定参数个数的数据,返回由该流的剩余元素组成的流
static <T> Stream<T> concat(Stream a, Stream b)合并a和b两个流为一个流
Stream<T> distinct()返回由该流的不同元素(根据Object.equals(Object) )组成的流
Stream<T> sorted()返回由此流的元素组成的流,根据自然顺序排序
<R> Stream<R> map(Function mapper)返回由给定函数应用于此流的元素的结果组成的流
IntStream mapToInt(ToIntFunction mapper)返回一个IntStream其中包含将给定函数应用于此流的元素的结果

注意

一般像 s -> Integer.parseInt(s) 这种形式的 都可以 使用 Integer::parseInt 来替代

Stream流终结操作方法

注意

一旦Stream调用了终结方法,流的操作就全部终结了,不能继续使用,只能创建新的Stream操作。 终结方法: foreach , count

相关方法

方法名说明
void forEach(Consumer action)对此流的每个元素执行操作
long count()返回此流中的元素数

Stream流的收集操作

常用方法

方法名说明
R collect(Collector collector)把结果收集到集合中
  • ==工具类Collectors提供了具体的收集方式==

方法名说明
public static <T> Collectors toList()把元素收集到List集合中
public static <T> Collectors toSet()把元素收集到Set集合中
public static Collectors toMap(Function keyMapper,Function valueMapper)把元素收集到Map集合中
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值