原创

康师傅-java8新特性


java8 新特性

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

1

特点:

1

Lambda

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

1 1

1

四大基本函数接口

1 1 1

Stream流

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

1

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); //(供给函数接口)

1

筛选和切片

filter 过滤
distinct 去重
limit 限制
skip 跳过元素

1

映射

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

1

排序

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

1

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流终止操作 归约

将流中的数据返回结合起来,得到一个值

1

Stream流终止操作 收集

Collect 将流转换为其他形式

1

optional类

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

1 1

总结
经验
  • 作者:阿杰(联系作者)
  • 发表时间:2023-06-11T12:37:04
  • 版权声明:杰出版
  • 公众号:--无
  • 评论