JDK8新特性
JDK8新特性系统学习
敲木鱼的小和尚
热衷于专研技术的大好青年
展开
-
Java8新特性-006-Stream初识
基本概念 流由三部分组成 数据源,可以是List,数组… 零个或者多个中间操作,可以让前面一个流转换成另外一个流 终止操作,得到最后的结果 流操作的分类 惰性求值 只有终止操作执行时,中间操作才会执行 //在执行count终止操作的时候,xxx(),yyy()中间操作才会执行 stream.xxx().yyy().count(); //对于没有终止操作而言,中间操作,即中间的方法是不会执行,即xxx() yyy()不会执行 stream.xxx().yyy() 及早求值,即指在调用方法的原创 2020-08-20 00:35:28 · 172 阅读 · 0 评论 -
Java8新特性-005-方法引用
lambda表达式的语法糖,一种特殊情况,让代码更加简洁 入门案例public class MethodDemo { public static void main(String[] args) { List<String> list = Arrays.asList("hello","world","hello world"); //传统写法 list.forEach(item -> System.out.println(item.原创 2020-08-17 23:26:05 · 104 阅读 · 0 评论 -
Java8新特性-004-Optional
主要目的:为了解决NPE问题 概念 一个容器,内部可能包含空值或者非空值 如果包含则isPresent()返回true,否则false 是一个基于值的对象,所以,不要进行==的比较。基于值的对象有如下特点: final,不可变 相等是基于equals方法,而不是== 没有可访问的构造方法,构造通过工厂方法创建 Optional 是一个容器,内部真正保存数值的是final修饰的value对象 提供了三个工厂方法 通过empty构造,容器内部的value为Null的一个Optional容器对象.原创 2020-08-15 14:36:12 · 142 阅读 · 0 评论 -
Java8新特性-003-Predicate
作用 判断一个传入的参数,是否符合传入的行为,返回boolean值 源码 @FunctionalInterface public interface Predicate<T> { //唯一抽象方法 boolean test(T t); default Predicate<T> and(Predicate<? super T> other) { Objects.requireNonNull(other);原创 2020-08-11 23:13:03 · 552 阅读 · 0 评论 -
Java8新特性-002-Function
函数式接口 @FunctionalInterface public interface Function<T, R> { //抽象方法 R apply(T t); //默认方法 default <V> Function<V, R> compose(Function<? super V, ? extends T> before) { Objects.requireNonNull(befor原创 2020-08-10 00:14:46 · 331 阅读 · 0 评论 -
Java8新特性-001-Lambda表达式
概念 Lambda表达式的基本结构 (parma1,param2,param3) -> { 执行体 } 函数式接口:可以认为是一个标识 仅且只有一个抽象方法,独一无二的,只存在一个的 接口中可以有覆盖了Object中的方法,万物皆是object的子类 创建方式为下面三种 lambda表达式 方法引用 构造器引用 函数式接口注解 @FunctionalInterface 如果一个接口使用了该注解表示函数式接口,如果不是下面的两个条件,编译器则报错 是一个接口,而不是其他类型,包括原创 2020-08-10 00:13:59 · 129 阅读 · 0 评论