前面我们一直使用给到的Optional对象进行操作,今天实现自行创建和转化流

创建optional流

生成一个optional,如果传入的值为空,则返回空optional对象

1
Optional<String>optionalelse=Optional.ofNullable("b");

生成一个optional,如果传入的值为空,生成一个optional,如果传入的值为空,则抛出空指针异常

1
Optional<String>optional=Optional.of("a");

生成一个空的optional

1
Optional<String>empty=Optional.empty();

生成一个由多个optional组成的optional流

flatmap会将流组合起来,如果流为空,忽略,不为空则组合

1
Optional<String>result= Optional.of("a").flatMap(s->Optional.of("b"));

optional转换为流

  • 当入参类型和返回类型一致时,可以::
  • stream方法会将optional对象转换为流,如果optional为空,则返回空流
1
2
3
String[] arr={"a","b","c"};
Stream<String>arrStream=Arrays.stream(arr);
Stream<String>resultStream=arrStream.map(Optional::of).flatMap(Optional::stream);