美文网首页
java8新特性Lambda和Stream

java8新特性Lambda和Stream

作者: 小学生课代表 | 来源:发表于2020-12-01 10:56 被阅读0次

四大内置核心函数式接口

  • Consumer<T> 消费型接口 void accept(T t);
  • Supplier<T> 供给型接口 T get();
  • Function<T,R> 函数型接口 R apply(T t);
  • Predicate<T> 断言型接口 boolean test(T t);

lambda方法引用与构造器引用

一:方法引用:

若lambda体中的内容有方法已经实现了,我们可以使用"方法引用"
(可以理解为方法引用是lambda表达式的另外一种表现形式)
主要有三种语法格式
对象::实例方法
类::静态方法
类::实例方法
注意:
①lambda体中调用方法的参数列表与返回值类型,要与函数式接口中抽象方法的函数列表和返回值类型保持一致
②若lambda 参数列表中的第一参数是实例方法的调用者,而第二个参数是实例方法的参数时,可以使用ClassName::method
(第二个参数可以为空,此时实例方法中无参数)

二:构造器引用

格式:ClassName::new
注意:需要调用的构造器的参数列表要与函数式接口中抽象方法的参数列表保持一致

三:数组引用

Type[]::new

Stream的三个操作步骤

  • 创建Stream
  • 中间操作
  • 终止操作(终端操作)

中间操作

筛选与切片
filter-接受lambda,从流中排除某些元素。
limit-截断流,使其元素不超过给定的数量。
skip(n) - 跳过元素,返回一个扔掉了前n个元素的流。若流中元素不足n个,则返回一个空流。与limit(n)互补
distinct-筛选,通过流锁生成元素的hashCode()和equals()去除重复元素
映射
map-接收lambda,将元素转换成其他形式或提取信息。接收一个函数作为参数,该函数会被应用到每个元素上,并将其映射成一个新元素。
flatMap-接收一个函数作为参数,将流中的每一个值都换成另一个流,然后把所有流连接成一个流
排序
sorted()-自然排序(Comparable)
sorted(Comparator com)-定制排序
终止操作
查找与匹配
allMatch-检查是否匹配所有元素
anyMatch-检查是否至少匹配一个元素
noneMatch-检查是否没有匹配所有元素
findFirst-返回第一个元素
findAny-返回当前流中的任意元素
count-返回流中元素的总个数
max-返回流中最大值
min-返回流中最小值
归约
reduce(T identity, BinaryOperator) / reduce(BinaryOperator)-可以将流中元素反复结合起来,得到一个值。
收集
collect-将流转换为其他形式,接收一个Collector接口的实现,用于给Stream中元素做汇总的方法
Collectors收集器:想要按照一个什么方式进行结果的收集操作
ex:Collectors.toList()、Collectors.toSet()、Collectors.toCollection(HashSet::new)
分组:Collectors.groupingBy() 可以多级分组
分区:Collectors.partitioningBy() 也可以用分组实现
连接:Collectors.joining
计算:Collectors.summarizingXXX
注:分组、分区、连接、多用于对list中的对象里的属性分类提取操作

相关文章

  • Java8新特性

    自从使用上了Java8的Lambda和Stream编程后,彻底的爱上了。因此决定研究下其他新特性。 Lambda表...

  • JAVA8新特性:Stream与Lambda表达式

    一、Stream学习 在学习lambda表达式之前,我们需要先了解Stream这个java8的新特性。 Strea...

  • java8新特性

    java8新特性 原创者:文思 一、特性简介 速度更快 代码更少,增加了Lambda 强大的Stream API ...

  • 03_Java8_Lamda表达式学习

    Java8 的新特性:Lambda表达式、强大的 Stream API、全新时间日期 API、Concurrent...

  • Java8中的lambda表达式

    lambda表达式是Java8中最重要的特性之一,也是Stream,Optional等特性的基础。尽管lambda...

  • parallelStream使用不当引发的血案

    Stream简洁 众所周知,java8的新特性中出了lambda表达式之外最受人关注的还有stream一系列的ap...

  • java8的λ(lambda)表达式与Stream API

    一、λ(lambda)表达式学习 Java8最值得学习的特性就是Lambda表达式和Stream API,如果有p...

  • Java8特性详解 lambda表达式

    1.lambda表达式 Java8最值得学习的特性就是Lambda表达式和Stream API,如果有python...

  • java8 新特性

    java8 新特性 核心内容 Lambda:函数式接口编程,简化代码量,类型上下文自动推断。 Stream Api...

  • Stream流

    Stream流 java8新特性 Stream定义 A sequence of elements supporti...

网友评论

      本文标题:java8新特性Lambda和Stream

      本文链接:https://www.haomeiwen.com/subject/fbeniktx.html