findAny()
返回處理最快的一個(gè),xxList 如果確定查出來就一個(gè)
xxList.stream.map(Student::getId()).findAny();
大概就是這樣? 這樣返回的是一個(gè)Optional的對象? 比如Optional<Integer> id = 上面的
optional的好處就是?
解決了npe的一點(diǎn)點(diǎn)問題查不出來 也不影響好像
也就是說就算返回是空 這個(gè)optional也能接得住 Optional允許我們返回一個(gè)null對象
常用的方法 isPresent() get()檢查其包含的對象時(shí)候?yàn)榭栈蛘卟皇?/p>
這個(gè)Optional對象 就是中間商 讓它作為中間的人 用它接收 用它作為入?yún)魅?可以免去 很多人工的if判斷
ifPresent()
返回的是void 就是對嘟點(diǎn)之前的Optional對象進(jìn)行判斷 如果有值 就進(jìn)入到里面進(jìn)行蘭布達(dá)計(jì)算 如果沒有值就跳過
沒有值會拋出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是一個(gè)空值 需要返回一個(gè)默認(rèn)的值的 時(shí)候? 這是可以用orElse()方法?
當(dāng)optional值不存在時(shí),調(diào)用orElse()返回orElse()的參數(shù),如果optional的值存在時(shí)返回optional的值
orElseGet
optional為空時(shí),里面可以調(diào)用 函數(shù)? 然后返回 自己需要的值
當(dāng)optional值不存在時(shí),調(diào)用orElseGet()中接口調(diào)用的返回值,如果optional的值存在時(shí)返回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
決定自己要拋出 什么樣的異常