简要说明
开发过程中 经常会对 参数对象 判空:这里仅仅针对通过Stream流获取到的对象为空场景的处理
案例参考
orElse
Long nativeLangId = basicCountryLanguageDoList.stream().filter(c -> c.getNativeLanguage().equals(YesOrNoEnum.YES.code())).findFirst().orElse(new BasicCountryLanguageDO()).getLanguageId();
�orElseGet【推荐】
Long universalLangId = basicCountryLanguageDoList.stream().filter(c -> c.getUniversalLanguage().equals(YesOrNoEnum.YES.code())).findFirst().orElseGet(BasicCountryLanguageDO::new).getLanguageId();
怎么理解
相同点
不同点
orElse:不论通过stream流 获取到的对象是否为null 都会执行orElse()里的方法,也就是去创建对象
orElseGet:而orElseGet() 只会在前面获取的对象为null的时候,才会执行。
优点:
缺点:
orElseGet:语法写起来较为复杂了些。
orElse:产生额外的对象