最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

如何在java 8 stream表達(dá)式實(shí)現(xiàn)if/else邏輯

 更新時(shí)間:2020年04月24日 08:27:29   作者:flydean程序那些事  
這篇文章主要介紹了如何在java 8 stream表達(dá)式實(shí)現(xiàn)if/else邏輯,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

簡(jiǎn)介

在Stream處理中,我們通常會(huì)遇到if/else的判斷情況,對(duì)于這樣的問題我們?cè)趺刺幚砟兀?/p>

還記得我們?cè)谏弦黄恼耹ambda最佳實(shí)踐中提到,lambda表達(dá)式應(yīng)該越簡(jiǎn)潔越好,不要在其中寫臃腫的業(yè)務(wù)邏輯。

接下來我們看一個(gè)具體的例子。

傳統(tǒng)寫法

假如我們有一個(gè)1 to 10的list,我們想要分別挑選出奇數(shù)和偶數(shù)出來,傳統(tǒng)的寫法,我們會(huì)這樣使用:

  public void inForEach(){
    List<Integer> ints = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);

    ints.stream()
        .forEach(i -> {
          if (i.intValue() % 2 == 0) {
            System.out.println("i is even");
          } else {
            System.out.println("i is old");
          }
        });
  }

上面的例子中,我們把if/else的邏輯放到了forEach中,雖然沒有任何問題,但是代碼顯得非常臃腫。

接下來看看怎么對(duì)其進(jìn)行改寫。

使用filter

我們可以把if/else的邏輯改寫為兩個(gè)filter:

List<Integer> ints = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);

    Stream<Integer> evenIntegers = ints.stream()
        .filter(i -> i.intValue() % 2 == 0);
    Stream<Integer> oddIntegers = ints.stream()
        .filter(i -> i.intValue() % 2 != 0);

有了這兩個(gè)filter,再在filter過后的stream中使用for each:

evenIntegers.forEach(i -> System.out.println("i is even"));
oddIntegers.forEach(i -> System.out.println("i is old"));

怎么樣,代碼是不是非常簡(jiǎn)潔明了。

總結(jié)

lambda表達(dá)式需要盡可能的簡(jiǎn)潔,我們可以用stream的filter來替代if/else業(yè)務(wù)邏輯。

本文的例子https://github.com/ddean2009/learn-java-streams/tree/master/lambda-if-else

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

黑龙江省| 广河县| 广南县| 千阳县| 辽源市| 特克斯县| 和龙市| 土默特右旗| 黄浦区| 铜鼓县| 益阳市| 惠来县| 乌苏市| 米林县| 昌都县| 加查县| 临猗县| 瓮安县| 玉树县| 钟山县| 安乡县| 密山市| 台东市| 兖州市| 会东县| 漠河县| 松潘县| 台南市| 延吉市| 盐山县| 大兴区| 汉寿县| 武鸣县| 万安县| 清河县| 镇雄县| 民县| 施甸县| 文成县| 西贡区| 平阳县|