最近2018中文字幕在日韩欧美国产成人片_国产日韩精品一区二区在线_在线观看成年美女黄网色视频_国产精品一区三区五区_国产精彩刺激乱对白_看黄色黄大色黄片免费_人人超碰自拍cao_国产高清av在线_亚洲精品电影av_日韩美女尤物视频网站

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Java中怎么利用Optional與Stream取代if判空邏輯

這篇文章給大家介紹Java中怎么利用Optional與Stream取代if判空邏輯,內(nèi)容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

成都創(chuàng)新互聯(lián)公司是一家專業(yè)提供欽州企業(yè)網(wǎng)站建設(shè),專注與網(wǎng)站設(shè)計、網(wǎng)站制作、html5、小程序制作等業(yè)務(wù)。10年已為欽州眾多企業(yè)、政府機構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站設(shè)計公司優(yōu)惠進行中。

注:如果對Java8新特性中的lambda表達式與Stream不熟悉的可以去補一下基礎(chǔ),了解概念。

首先下面代碼中的List放入了很多Person對象,其中有的對象是null的,如果不加校驗調(diào)用Person的getXXX()方法肯定會報空指針錯誤,一般我們采取的方案就是加上if判斷:

public class DemoUtils {  public static void main(String[] args) {    List personList = new ArrayList<>();    personList.add(new Person());    personList.add(null);    personList.add(new Person("小明",10));    personList.add(new Person("小紅",12));        for (Person person : personList) {    //if判空邏輯      if (person != null) {        System.out.println(person.getName());        System.out.println(person.getAge());      }    }  }  static class Person {    private String name;    private int age;    public Person() {    }    public Person(String name, int age) {      this.name = name;      this.age = age;    }    public String getName() {      return name;    }    public void setName(String name) {      this.name = name;    }    public int getAge() {      return age;    }    public void setAge(int age) {      this.age = age;    }  }}

其實,Java新特性Stream API 與 Optional 提供了更加優(yōu)雅的方法:

利用Stream API 中的 filter將隊列中的空對象過濾掉,filter(Objects::nonNull)的意思是,list中的每個元素執(zhí)行Objects的nonNull()方法,返回false的元素被過濾掉,保留返回true的元素。

public static void main(String[] args) {    List personList = new ArrayList<>();    personList.add(new Person());    personList.add(null);    personList.add(new Person("小明",10));    personList.add(new Person("小紅",12));    personList.stream().filter(Objects::nonNull).forEach(person->{      System.out.println(person.getName());      System.out.println(person.getAge());    });  }

示例中的personList本身也可能會null,如果業(yè)務(wù)邏輯中要求personList為null時打日志報警,可以用Optional優(yōu)雅的實現(xiàn):

public static void main(String[] args) {  List personList = new ArrayList<>();  personList.add(new Person());  personList.add(null);  personList.add(new Person("小明", 10));  personList.add(new Person("小紅", 12));  Optional.ofNullable(personList).orElseGet(() -> {    System.out.println("personList為null!");    return new ArrayList<>();  }).stream().filter(Objects::nonNull).forEach(person -> {    System.out.println(person.getName());    System.out.println(person.getAge());  });}

代碼中的

orElseGet(() -> {  //代替log  System.out.println("personList為null!");  return new ArrayList<>();})

表示如果personList為null,則執(zhí)行這2句代碼,返回一個不含元素的List,這樣當personList為null的時候不會報空指針錯誤,并且還打了日志。

關(guān)于Java中怎么利用Optional與Stream取代if判空邏輯就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。


網(wǎng)頁標題:Java中怎么利用Optional與Stream取代if判空邏輯
文章起源:http://fisionsoft.com.cn/article/gpcced.html