Java8新特性-尚硅谷李贺飞老师

来自B站视频:Java8新特性教程,尚硅谷李贺飞老师:https://www.bilibili.com/video/BV14W411u7Ly?p=1

本Java视频涵盖了 Java8 的所有新特性:Lambda表达式、强大的 Stream API、全新时间日期 API、ConcurrentHashMap、MetaSpace。Java8 的新特性使 Java 的运行速度更快、代码更少(Lambda 表达式)、便于并行、最大化减少空指针异常。【JDK8官网:https://docs.oracle.com/javase/8/、JDK8的API官网:https://docs.oracle.com/javase/8/docs/api/index.html

目录

【Java内置四大核心函数式接口】

1、Consumer:消费型接口

2、Supplier:供给型接口

3、Function:函数型接口,r>

4、Predicate:断言型接口

【1、创建Stream流:共有四种方式】

【2-1、中间操作:筛选filter、切片limit、跳过skip、去重distinct】

【2-2、中间操作:映射 map、flatmap】

【2-3、中间操作:排序 sorted】

【3-1、终止操作:查找与匹配 allMatch、anyMatch、noneMatch、findFirst、findAny、count、max、min】

【3-2、终止操作:规约:map、reduce】

【3-3、终止操作:收集:collect。Collector是一个接口, Collectors是其工具类, 返回其实现类】

【3-4、终止操作:分组: Collectors.groupingby (Employee::getStatus) 】

【3-5、终止操作:分区: Collectors.partitioningBy (e->e.getSalary()>8000) 】

【Stream API 练习】


【匿名内部类和lambda表达式演示】

【需求1:获取当前公司员工中年龄大于35的员工信息】

【需求2:获取当前公司员工中薪资大于5000的员工信息】

【发现问题:需求1和需求2中重复代码太多,需要做优化,怎么优化呢?见下面的方式。】【策略设计模式:声名一个接口、拿到该接口的两个实现、写一个策略,即可。】

【优化方式一:策略设计模式的方式】

【优化方式二:匿名内部类的方式】

【优化方式三:lambda表达式的方式】

【优化方式四:StreamAPI的方式】

【题目1】使用lambda表达式作为参数对Employee对象数组排序

【题目2】使用lambda表达式作为参数对String字符串做各种处理

【题目3】使用lambda表达式作为参数对两个入参做处理

【Java内置四大核心函数式接口】

【Java内置的其他函数式接口】

1、Consumer<T>:消费型接口

解释:有一个参数,但是没有返回值。内置接口:void accept(T t) ;

2、Supplier<T>:供给型接口

解释:没有参数,但是会有一个返回值。内置接口:T get() ;

3、Function<T,R>:函数型接口

解释:有一个参数,同时会有一个返回值。内置接口:R apply(T t) ;

4、Predicate<T>:断言型接口

解释:有一个参数,同时会有一个返回值,且该返回值是boolean类型。内置接口:boolean test(T t) ;

 

【map操作:做一个提取操作。reduce操作:做一个规约操作。】

【1、创建Stream流:共有四种方式】

【2-1、中间操作:筛选filter、切片limit、跳过skip、去重distinct】

中间操作:不会执行任何lambda表达式中的操作。终止操作:一次性执行全部操作,这个过程称为 惰性求值。】

【注意:多个中间操作可以连接起来形成一个流水线,除非在流水线上触发终止操作,否则 中间操作不会执行任何的处理, 而在终止操作时一次性执行全部处理,这个过程称为“惰性求值”。】

【短路:只要找到了Stream流中间操作条件 所需要的数据之后,后面的内部迭代就不再继续进行了,这个过程称为“短路”!】

【2-2、中间操作:映射 map、flatmap】

【2-3、中间操作:排序 sorted】

【3-1、终止操作:查找与匹配 allMatch、anyMatch、noneMatch、findFirst、findAny、count、max、min】

【3-2、终止操作:规约:map、reduce】

【3-3、终止操作:收集:collect。Collector是一个接口, Collectors是其工具类, 返回其实现类】

【3-4、终止操作:分组: Collectors.groupingby (Employee::getStatus) 】

【3-5、终止操作:分区: Collectors.partitioningBy (e->e.getSalary()>8000) 】

【Stream API 练习】

【Java8之前可以这样用:】

 

【Java8之后可以这样用:parallel的底层是ForkJoinPool】

猜你喜欢

转载自blog.csdn.net/cmm0401/article/details/109382942
今日推荐