Java1.8 stream的 orElse 和 orElseGet
·
orElse(null)表示如果一个都没找到返回null。【orElse()中可以塞默认值。如果找不到就会返回orElse中你自己设置的默认值。】
orElseGet(null)表示如果一个都没找到返回null。【orElseGet()中可以塞默认值。如果找不到就会返回orElseGet中你自己设置的默认值。】
区别就是在使用方法时,即时时没有值 也会执行 orElse 内的方法, 而 orElseGet则不会。
@Test
public void test1(){
List<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(2);
Integer a = list.stream().filter(v->v==2).findFirst().orElse(get("a"));
Integer b = list.stream().filter(v->v==2).findFirst().orElseGet(()->get("b"));
System.out.println("a "+a);
System.out.println("b "+b);
}
public static int get(String name){
System.out.println(name+"执行了方法");
return 1;
}
结果
无值则执行一样,都会执行返回默认值
更多推荐
已为社区贡献1条内容
所有评论(0)