Java中新特性lambad表达式和stream流

lambad表达式:是将函数式接口作为形参,lambad表达式作为实参,将行为作为参数传递

一、调用Collections.sort()方法,通过定值排序比较两个数进行排序

1、定制排序:指自定义比较器|定制排序(需要实现Comparator接口,重写compare方法)

2、自然排序:内部比较器|自然排序(需要实现Comparable接口,重写compare to方法)

二、String字符串的lambad表达式

1、声明函数式接口,接口中声明抽象方法,public String getValue(String str)

2、声明类,类中编写方法使用接口作为参数,能对一个字符串,进行某种操作,返回结果

三、数值的lambad表达式

1、声明一个带两个泛型的函数式接口,泛型类型为<T ,R>T为参数,R为返回值

2、接口中声明对应抽象方法

3、在类中声明方法,参数三个,两个long类型的参数,接口作为参数,接口实现中计算两个long型参数的和

函数式接口:要求只有一个必须被重写的抽象方法的接口

@FunctionalInterface 注解强制检测是否为函数式接口

java.util.function包下提供一系列的函数式接口

四大内置函数式接口

Consumer<T>消费型接口(void accept(T t)对给定的参数执行此操作。)

Function<T,R>函数式接口(R apply (T t)将此函数应用于给定的参数)

Supplier<T>供给型接口(T get() 获取结果。)

Predicate<T>段言型接口(boolean test(T t)根据给定的参数计算此谓词)

方法引用(::)

简化lambad表达式(是lambad表达式的另外一种表现形式)

前提:当lambad体的实现是通过调用另外一个方法实现的,可以通过方法引用直接引用这个方法,用来简化完整的lambad表达式的结构

语法:1.lambad的参数列表与返回值要求能够一一对应lambad体中所引用方法的参数列表与返回值

2、lambad的返回值要求与所引用方法的返回值保持对应一致(1、lambad的参数列表如果只有一个参数:作为调用所引用的成员方法的对象存在;2、lambad的参数列表如果存在多个参数:第一个参数作为调用所引用的成员方法的对象存在,lambad的第二个参数开始,一 一对应匹配所引用方法的参数列表)

构造器引用:数据类型::new

Steam:(数据的渠道,用来操作由数据源(数组、集合)所产生的元素列表。)

IO流:传输数据;Stream流:操作数据,计算数据;数组|集合:存储数据

Stream流的特点

1.Stream流本身不会存储数据

2.Stream不会修改数据源|源对象,每次会返回持有结果的新的流Stream

3.延迟执行|惰性加载:当获取终止行为时候,才会执行一系列的中间操作

4.流都是一次性的流,不能重复使用多次,一旦使用过就已经被破坏

步骤

1.创建Stream(1)Collection->stream;2)Arrays->stream(数组);3)Stream.of(值列表))

2.一系列流式的中间操作(都会返回一个持有结果的新的流)

3.终止行为

中间操作

1.过滤Stream fillter (Predicate<? super T> predicate);

2.去重 distinct()(比较equals与hashCode())

3.截取limit(long)从第一个开始截取几个

4.跳过skip(long) 跳过前n个

5.排序sorted()-->内部比较器(sorted()(Comparator)-->比较器)

6.映射 map(Function fun) stream操作的每一个数据都所用于参数函数,映射成一个新的结果,最后返回一个持有映射后的新的结果的流

终止行为

1.遍历 foreach(Consumer)

2.查找与匹配

//allMatch-检查是否匹配所有元素

//anyMatch-检查是否至少匹配一个元素

//noneMatch-检查是否没有匹配所有元素

//findFirst-返回当前流中的任意元素

//findAny-返回当前流中的任意元素

//count-返回流中元素的总个数

//max-返回流中最大值

//min-返回流中最小值

3.规约 redue(map->reduce;加工->计算结果)

4.收集(collect())

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值