目录
jdk8 新特性汇总
(一).lamda表达式
(二).默认方法 default
(三).Stream API
(四).Date Time API
(五).Optional 类
jdk8新特性常用的打开方式
(一).lamda表达式(类似一种语法糖),本质是一个匿名内部类
(parameters) -> expression 或 (parameters) ->{ statements; }
(二) .默认方法,增强接口
定义方式:在方法名前加上default修饰符
接口的实现类可以选择不重写默认方法。
interface A{
/*
*默认方法的语法
*/
访问修饰符 default 返回值类型 方法名(){
System.out.println("Hello,我是默认方法");
}
}
//默认方法不需要重写 当然如果你需求不一样也可以进行重写
class B implements A{
}
(三).Stream() 常说的“用流处理”
jdk1.8版本,oracle在Collection下新增的一个默认方法
官方解释:stream() 返回以此集合作为源的顺序 Stream 。支持顺序和并行聚合操作的一系列元素。
常用流处理:
1.stram()方法:将集合转为流
2.collect()方法:将流转为集合
3.filter()方法:将转为流的集合过滤出满足要求的流
List<Integer> list = Arrays.asList(6, 7, 3, 8, 1, 2, 9);
Stream<Integer> stream = list.stream();
stream.filter(x -> x > 7).forEach(System.out::println);
4.map()方法:将每个元素映射成新元素
//将集合中的每一个元素转为字符串
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
List<String> result = list.stream()
.map(x -> String.valueOf(x))
.collect(Collectors.toList());
System.out.println(result);//[1, 2, 3, 4, 5]
5.limit(n):获取n个元素
6.skip(n):跳过n元素
7.skip和limit组合实现分页(对数据库的压力没有减轻,只是看着分页了)
8.distinct:去除重复元素
9. foreach: 遍历
(四).Date Time API
LocalDate 表示日期,包含年月日,格式为2019-10-16
LocalTime 表示时间,包含时分秒,格式为16:38:54.158549300
LocalDateTime 表示日期时间,包含年月日,时分秒,格式为2018-09-06T15:33:56.750
DateTimeFormatter 日期时间格式化类。
lnstant 时间戳,表示一个特定的时间瞬间。
Duration 用于计算2个时间(LocalTime,时分秒)的距离
Period 用于计算2个日期(LocalDate,年月日)的距离
ZonedDateTime 包含时区的时间
(五).Optional 类
官方解释 :
可能包含或不包含非空值的容器对象。 如果一个值存在, isPresent()将返回true和get()将返回值。的
提供依赖于存在或不存在包含值的其他方法,例如orElse() (如果值不存在则返回默认值)和ifPresent() (如果值存在则执行代码块)。
这是一个value-based课; 使用身份敏感的操作(包括引用相等(的==上的实例),标识哈希码,或同步) Optional可具有不可预测的结果,应当避免。
结合stream()的用法
Stream接口中定义了一个返回Optional的方法:
Optional<T> findFirst(); 返回描述此流的第一个元素的Optional如果流为空,则返回一个空的Optionalmax(Comparator<? super T> comparator)根据提供的Comparator返回此流的最大元素。
....未完待续
663





