JDK8

Java 8 Lambda 表达式
Lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法中)。
 不需要声明参数类型,编译器可以统一识别参数值
 一个参数无需定义圆括号,但多个参数需要定义圆括号
 如果主体包含了一个语句,就不需要使用大括号
 如果大括号内有且仅有一个语句,则无论是否有返回值,都可以省略大括号、return关键字及语句分号
标记类型接口:是一种没有方法或属性声明的接口,用作描述类的元数据
函数式接口:是只包含一个抽象方法声明的接口(用注解@FunctionalInterface来保证接口为函数接口)
JDK预定义了很多函数接口以避免用户重复定义
Function:这个接口代表一个函数,接受一个T类型的参数,并返回一个R类型的返回值。
Consumer:跟Function的唯一不同是它没有返回值。
Predicate:接受一个T类型的参数,用来判断某项条件是否满足
Supplier:无入参,返回T类型值
jdk8中使用了::的用法(方法引入)。就是把方法当做参数传到stream内部,使stream的每个元素都传入到该方法里面执行一下
  person -> person.getAge();   等价于  Person::getAge        new HashMap<>()等价于 HashMap::new
  
collect是一个将数据流缩减为一个值的归约操作:收集器
stream().collect(Collectors.toList())//
stream().collect(Collectors.toSet()) //唯一的,不在乎元素的顺序,使用toSet收集器。
stream().collect(Collectors.toMap(x -> x.getPrdtName(), x -> x))  //toMap收集器需要两个映射方法来获得映射的键和值。toMap收集器将一个流转换为一个映射。存在重复的键时抛出异常
.stream().collect(toMap(Task::getTitle, identity(), (t1, t2) -> t2)) //处理重复问题,指定一个合并方法,也可以编写一个智能的算法来处理冲突
.stream().map(BulletinVO ::getBulletinContent).collect(Collectors.joining(";")) //12;123;1234;12345
Collector将一个数据流中的元素进行分组:
.stream().collect(Collectors.groupingBy(task -> task.getType()))  //根据任务类型来对任务进行分类,返回Map<TaskType, List<Task>>
Collectors.partitioningBy(p -> p.getAge() < 18)   //.get(true)|.get(false)

流的构造
1、Stream.of("a", "b", "c") 2、Arrays.stream(strArray) 3、list.stream()
map:把 inputStream 的每一个元素,映射成 outputStream 的另外一个元素
flatMap((childList) -> childList.stream()):把 input Stream 中的层级结构扁平化,就是将最底层元素抽出来放到一起
filter:对原始 Stream 进行某项测试,通过测试的元素被留下来生成一个新 Stream
peek(intermediate 操作)和foreach( terminal 操作)类似
findFirst: termimal 兼 short-circuiting 操作,它总是返回 Stream 的第一个元素,或者空.返回值类型:Optional
reduce:把Stream元素组合起来。它提供一个起始值(种子),然后依照运算规则(BinaryOperator),和前面 Stream 的第一个、第二个、第 n 个元素组合//Stream.of("a","b").reduce("",String::concat)
limit 返回 Stream 的前面 n 个元素;skip 则是扔掉前 n 个元素
allMatch:全部匹配返回true;anyMatch:一个匹配返回true;noneMatch:没有匹配返回true
自己生成流
Stream.generate(实现 Supplier 接口)由于它是无限的,必须利用 limit 之类的操作限制 Stream 大小

Optional 这是一个可以为null的容器对象。如果值存在则isPresent()方法会返回true,调用get()方法会返回该对象
of 为非null的值创建一个Optional
ofNullable 如果指定的值为null,则返回一个空的Optional
ifPresent 如果Optional实例有值则为其调用consumer,否则不做处理
orElse  如果有值则将其返回,否则返回指定的其它值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值