findAny()
返回处理最快的一个,xxList 如果确定查出来就一个
xxList.stream.map(Student::getId()).findAny();
大概就是这样 这样返回的是一个Optional的对象 比如Optional<Integer> id = 上面的
optional的好处就是
解决了npe的一点点问题查不出来 也不影响好像
也就是说就算返回是空 这个optional也能接得住 Optional允许我们返回一个null对象
常用的方法 isPresent() get()检查其包含的对象时候为空或者不是
这个Optional对象 就是中间商 让它作为中间的人 用它接收 用它作为入参传入 可以免去 很多人工的if判断
ifPresent()
返回的是void 就是对嘟点之前的Optional对象进行判断 如果有值 就进入到里面进行兰布达计算 如果没有值就跳过
没有值会抛出nosuchelementException
List list =new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");
Optional l = list.stream().filter(x->x.startsWith("d")).findAny();
try {
System.out.println(l.get());
}catch (NoSuchElementException e ){
System.out.println("没有找到");
}
传入的是a就会打印a ; 如果啊传入的是d 就会打印没有找到
orElse
如果optional是一个空值 需要返回一个默认的值的 时候 这是可以用orElse()方法
当optional值不存在时,调用orElse()返回orElse()的参数,如果optional的值存在时返回optional的值
orElseGet
optional为空时,里面可以调用 函数 然后返回 自己需要的值
当optional值不存在时,调用orElseGet()中接口调用的返回值,如果optional的值存在时返回optional的值
StringnullValue =null;
Stringoptional = Optional.ofNullable(nullValue).orElse("Su");
System.out.println(optional); //su
StringoptionalGet = Optional.ofNullable(nullValue).orElseGet(() ->"Xiao");
System.out.println(optionalGet); //xiao
StringnonNullOptional = Optional.ofNullable("Susan").orElse("Su");
System.out.println(nonNullOptional);// susan
StringnonNullOptionalGet = Optional.ofNullable("Molly").orElseGet(() ->"Xiao"); System.out.println(nonNullOptionalGet);//molly
orElseThrow
决定自己要抛出 什么样的异常