IT评测·应用市场-qidao123.com

标题: JAVA8新特性 [打印本页]

作者: 大连全瓷种植牙齿制作中心    时间: 2023-5-24 01:53
标题: JAVA8新特性
Lambda表达式

1.基本格式
  1. (参数列表)->{代码}
复制代码
2.省略规则

Stream流

1.创建流

2.中间操作

3.终结操作

4.注意事项

Optional

1.创建对象

一般使用Optional的静态方法ofNullable来把数据封装成一个Optional对象,无论传入的参数是否为null都不会出现问题
  1. Example example = getExample();
  2. Optional<Example> exampleOptional = Optional.ofNullable(example);
复制代码
在确定一个对象不为空的则可以使用Optional的静态方法of来把数据封装成Optional对象
  1. Example example = getExample();
  2. Optional<Example> exampleOptional = Optional.of(example);
复制代码
如果一个方法的返回值类型是Optional类型,而如果我们经判断发现某次得到的返回值为null,这个时候就需要把null封装成Optional对象返回。这时则可以使用Optional的静态方法empty来进行封装。
  1. Optional.empty();
复制代码
2.消费值

使用 ifPresent 方法来消费其中的值 ,这个方法会判断其内封装的数据是否为空,不为空时才会执行具体的消费代码
  1. optiona1<Example> exampleOptiona1 = optional.ofNul1ab1e(getAxample());
  2. exampleOptiona1.ifPresent(example -> system.out.println(example.getName()));
复制代码
3.获取值

4.过滤

使用filter方法对数据进行过滤,如果原本是有数据的,但是不符合判断,也会变成一个无数据的Optional对象
  1. Optional<Example> exampleOptional = Optional.ofNullable(getExample());
  2. exampleOptional.filter(example -> example.getAge() > 100).ifPresent(example -> System.out.println(example.getName()));
复制代码
5.判断

可以使用isPresent方法进行是否存在数据的判断。如果为空,返回值为false;如果不为空,返回值为true。但是这种方式并不能体现Optional的好处,更推荐使用ifPresent方法。
  1. optiona1<Example> exampleOptional = optional.ofNullab1e(getExample());
  2. if (exampleOptional.isPresent() {
  3.         system.out.println(exampleOptional.get().getName());
  4. }
复制代码
6.数据转换

Optional还提供了map可以让我们的对数据进行转换,并且转换得到的数据也还是被Optional包装好的,保证了我们的使用安全。
  1. optiona1<Example> exampleOptional = optional.ofNullab1e(getExample());
  2. Optional<List<Book>> books = exampleOptional.map(author -> author.getBooks());
  3. books.ifPresent(book -> System.out.printLn(book.getName()));
复制代码
函数式接口

1.概述

只有一个抽象方法的接口我们称之为函数接口
JDK的函数式接口都加上了 @FunctionalINterface 注解进行标识。但是无论是否加上该注解只要接口中只有一个抽象方法,都是函数式接口
2.常见函数式接口

3.常用的默认方法

方法引用

在使用Lambda时,如果方法体中只有一个方法的调用的话(包括构造方法),可以用方法引用进一步简化代码
基本格式:
​        类名或对象名::方法名
高级用法

JDK5中引入的自动装箱和自动拆箱虽然方便,但也是要消耗时间的,为了能对这部分的时间消耗进行优化,Stream提供了很多专门针对基本数据类型的方法
例如:
mapToInt、mapToLong、mapToDouble、flatMapToInt、flatMapToDouble 等
并行流

当流中有大量元素时,可以使用并行流去提高操作的效率。其实并行流就是把任务分配给多个线程去完成。使用Stream时,只需要修改一个方法的调用就可以使用并行流,从而提高效率。
  1. stream.parallel()
复制代码
也可以通过 parallelStream 直接获取并行流对象
  1. parallelStream()
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!




欢迎光临 IT评测·应用市场-qidao123.com (https://dis.qidao123.com/) Powered by Discuz! X3.4