Java8即jdk1.8,是Java语言开发的一个主要版本,Oracle公司与2014年3月发布。Java8为 Java语言、编译器、类库、开发工具与JVM带来了大量新特性。
一、lamda表达式
lambda表达式是一个匿名函数,可以写出更简洁,更灵活的代码。
1.使用
1.(->):lambda操作符,或者叫做箭头操作符; 2.箭头操作符左边:lambda形参列表(其实就是接口中的抽象方法的形参列表) 3.箭头操作符右边:lambda体(就是重写的抽象方法的方法体)
2.总结:
1.箭头符左边:lambda形参列表的参数类型可以省略的(类型推断):如果lambda形参列表只有一个参数,其一对()也可以省略。 2.箭头符右边:lambda体应该用{}包裹;如果lambda体只有一条执行语句(可能是return语句),可以省略这一对{}和return关键字。
3.lambda表达式本质:作为函数式接口的实例。 如果一个接口中只声明了一个抽象方法,则此接口就称为函数式接口(functionalInterface)。我们可以在一个接口上使用@FunctionalInterface注解,这样做可以检查它是否是一个函数式接口,同时Javadoc也会包含一条声明,说明这个接口是一个函数式接口。 java.util.function包下定义了Java8的丰富的函数式接口。 4.所以以匿名实现类表示的都可以使用lambda表达式来实现。
3.Java内置的4大核心函数式接口
4.方法引用
5.构造器引用
和方法引用类似,函数式接口的抽象方法的形参列表和构造器的形参列表一致。 抽象方法的返回值类型即为构造器所属的类的类型。(如果类中有多个构造器,那么是通过函数式接口的泛型来识别引用的是类中的哪个构造器)
6.数组引用
将数组引用看做是一个特殊的类,那么写法与构造器引用一致。
二、StreamAPI
1.创建stream的方式一:
2.创建stream方式二:
3.创建stream的方式三:
4.stream的中间操作:
(1)筛选切片
(2)映射
(3)排序
5.stream的终止操作:
(1)匹配查找
(2)归约
(3)收集
|