Java8 新特性

2021-01-16  本文已影响0人  杨斌_1024

Java8里面主要包含了函数式编程。本文代码地址.

目录结构:

第一个大类是Function:

A. Predicate是返回boolean类型Function,执行的是test。

B. Function是R apply(T t);主要用于返回结果。

C. Consumer是主要用于执行的,void accept(T t);通常用于执行异步方法。

D. 除去前面所有的传入一个参数,还有可以传入两个参数的,用法与之前的相同。

第二大类是接口:

A Java8的接口可以有默认的实现方法

B.可以传入方法

C.接口之间的继承行为

D.lambda中的变量应该是final的,而不是随意更改的

E.使用lambda分别实践了Comparable和Comparator

Comparable通过改造元素本身来实现排序,Comparator通过编写排序规则来实现排序

第三大类:stream

Stream是可以多线程,并发执行的。

Stream可以对元素进行分组。

Java8通过新增Optional实现对空指针的处理。

Stream可以Partitioning,的意思就是可以按照要求给元素分组。

求和。

第一个大类是Function:

A. Predicate是返回boolean类型Function,执行的是test,用法有以下几种:

Predicate

a. Predicate bonusLambdas = (emp)->emp.getRating()>10?true:false;

b. Predicate execLambdas = (emp)->emp.getName().startsWith("ad")?true:false;

Predicate andLambdas = bonusLambdas.and(execLambdas);

c. Predicate isEqualsLambdas = Predicate.isEqual(new Employee(7,"admins"));

d. employeeList.stream().filter(isEqualsLambdas).collect(Collectors.toList()).forEach(item ->{

System.out.println("isEqualsLambdas: "+item.getRating()+" "+item.getName());

});

e. 自带的几个函数:or,and,isEqual,negate

B. Function是R apply(T t);主要用于返回结果,用法有以下几种:

Function

a. Funciton getMovie = s ->new Movie(s);

private Movie testMovie(String movie){

return getMovie.apply(movie);

}

b.stream中的map就是用Function: Stream map(Function mapper);

  并对flatmap学习.

c. Funtion是可以并运算的,andthen先执行前者,后执行后者。compose是先执行后者,再执行前者。

d. Function有个Identify的效果跟原来的一样。

b.flatmap c.andThen,compose d.Identify

C. Consumer是主要用于执行的,void accept(T t);通常用于执行异步方法。

Consumer

D. 除去前面所有的传入一个参数,还有可以传入两个参数的,用法与之前的相同。

BiPredicate D

第二大类是接口:

A Java8的接口可以有默认的实现方法

主要解决的是一个封装问题,对于确定性的步骤,我们可以封装成一个默认的实现。

isExec

B.可以传入方法

Input functioninterface

C.接口之间的继承行为

子类可以访问父类的默认实现方法,当有多个父类的方法相同可以使用super区分

Inherit

D.lambda中的变量应该是final的,而不是随意更改的

Final

E.使用lambda分别实践了Comparable和Comparator

Comparable通过改造元素本身来实现排序,Comparator通过编写排序规则来实现排序

Comparator

第三大类:stream

Stream是可以多线程,并发执行的,通过ForkJoinTask原理:https://blog.csdn.net/u013898617/article/details/79146389

Stream

Stream可以对元素进行分组:

Grouping

Java8通过新增Optional实现对空指针的处理:

Optional

Stream可以Partitioning,的意思就是可以按照要求给元素分组:

Partitioning

求和:

Sum
上一篇 下一篇

猜你喜欢

热点阅读