java8 新特性
lambda 表达式
函数式接口
Stream API流
OPtional类
新日期

特点:

Lambda
可以让代码更简洁,
方法引用 Interget :: compare
1 对象 :: 实例方法 对象.方法
2 类 :: 静态方法 类.方法
lambda引用 ()->方法
左边是参数 右边是方法体 对接口的实例
如何一个接口中只有一个方法 就是函数式接口 可以使用注解 @FuncationInterface 校验接口只能有一个方法
匿名内部类 可以使用lambda


四大基本函数接口

Stream流
对集合操作 和cpu打交道
顺序:执行流程,中间操作,终止操作

Strean流创建实例
流的创建方式 4种
1 集合创建
2 数组创建
3 Stream.of(对象)创建
4 Stream.iterate,Stream.generate 无限流使用函数接口lambda
/**
* 第一种创建 通过集合
*/
Stream<Integer> stream = integers.stream();//顺序流 按照集合中的顺序进行操作
Stream<Integer> integerStream = integers.parallelStream();//并行流 像多线程操作
/**
* 第二种创建 通过数组
*/
Stream<String> stream1 = Arrays.stream(strings);//String【】 数组 创建
Stream<Integer> stream2 = Arrays.stream(integers1);//Integer【】 数组 创建
/**
* 第三种创建 通过 Stream.of(T..)
*/
Stream<String> strings1 = Stream.of(strings);//of(里面泛型对象)
/**
* 第四种创建 创建无限流 (造数据使用)
*/
Stream.iterate(0,n->n+3).limit(10).forEach(System.out::println); //iterate 无限迭代 (种子,lambda表达式)
Stream.generate(Math::random).limit(10).forEach(System.out::println); //(供给函数接口)

筛选和切片
filter 过滤
distinct 去重
limit 限制
skip 跳过元素

映射
map 接受一个函数作为参数,改函数会被应用到每一个元素,形成新的元素

排序
sorted 默认升序 可以重写 comper方法

Stream流终止操作 匹配与查找
allMatch(Predicate p) 是否匹配所有元素 返回Boolean
anyMatch(Predicate p) 至少匹配一个元素 返回Boolean
noneMatch(Predicate p)没有匹配元素 返回Boolean
findFirst()返回第一个元素
findany()返回任意元素
count 计数 返回long类型
max(Comparator c)流中最大值
min(Comparator c)流中最小值
forEach()内部迭代
Stream流终止操作 归约
将流中的数据返回结合起来,得到一个值

Stream流终止操作 收集
Collect 将流转换为其他形式

optional类
防止空指针
ofNullable(T t)
orElse(T t)
搭配使用
或者
of()
get()
搭配使用

评论