
Java8特性
ouyang2018
这个作者很懒,什么都没留下…
展开
-
Lambda表达式
Lambda表达式的基本结构:(param1,param2,param3) -> { body }(type1 param1,type2 param2, type3 param3) -> { body }type是类型声明,编译器可以根据上下文推断参数的类型,如果可以推断出,则可以不加,加上是为了代码的可读性一个Lambda表达式可以有0个或多个参数参数的类型既可以明确声明...原创 2019-10-02 15:58:43 · 197 阅读 · 0 评论 -
Function函数式接口
高阶函数:如果一个函数接收一个函数作为参数,或者返回一个函数作为返回值,那么该函数就叫做高阶函数。Function函数式接口:传入一个参数,根据参数可以做一些操作,然后返回一个值(参数和返回值得类型是泛型)@FunctionalInterfacepublic interface Function<T, R> { R apply(T t); default <...原创 2019-10-02 16:05:47 · 677 阅读 · 0 评论 -
Optional
解决Java中空指针异常的问题(NPE NnullPointerException)代码示例:public class MyTest10 { public static void main(String[] args) { Employee emp1 = new Employee("zhangsan"); Employee emp2 = new Em...原创 2019-10-02 16:06:44 · 220 阅读 · 0 评论 -
Predicate函数式接口
Predicate函数式接口:传入一个参数,返回一个boolean值。@FunctionalInterfacepublic interface Predicate<T> { boolean test(T t); default Predicate<T> and(Predicate<? super T> other) { Obj...原创 2019-10-02 16:07:37 · 204 阅读 · 0 评论 -
Stream
流由3部分构成1、源2、零个或多个中间操作(返回新的Stream对象)3、终止操作(则不会返回Stream对象,甚至可能不返回值)流操作的分类1、惰性求值2、及早求值例如stream.x().y().z().count()。stream是源,x().y().z()是中间操作,也是惰性求值,即不会立即执行,而count()是终止操作,也是及早求值,会立即执行,而中间操作也会在终止操作执...原创 2019-10-02 16:13:56 · 187 阅读 · 0 评论 -
collector源码分析与收集器核心
日常操作:list.Stream().collect(Collectors.counting())collect:收集器Collector作为collect方法的参数Collector是一个接口,它是一个可变的汇聚操作,将输入元素累积到一个可变的结果容器中;它会在所有元素都处理完毕后,将累积的结果转换为一个最终的表示(这是一个可选操作),它支持串行和并行两种方式执行。Collector...原创 2019-10-02 16:17:38 · 442 阅读 · 0 评论 -
方法引用
方法引用实际上是Lambda表达式的一种语法糖可以将方法引用看作是一个【函数指针】,方法引用共分为4类:1、类名::静态方法名public class Student { private String name; private int score; //省略get,set和构造方法 //下面定义两个静态方法,分别根据分数和名字排序,后面用于方法引用 ...原创 2019-10-02 16:19:05 · 78 阅读 · 0 评论 -
默认方法(default method)
默认方法用关键字default来标注,被default所标注的方法,需要提供实现,而子类可以选择实现或者不实现该方法,通过这样的机制,就能够实现在接口中加入新方法,则子类无需进行任何改动,需要注意的是default只能用于接口中修饰方法,不能在类中使用。interface MyInterface2{ default void myMethod(){ System.out....原创 2019-10-02 16:19:55 · 1032 阅读 · 0 评论