<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          StreamAPI 處理 BigDecimal 的 add 操作

          共 1320字,需瀏覽 3分鐘

           ·

          2020-10-29 09:19


          來源 |?公眾號「鍋外的大佬」

          1. 引言

          我們通常使用Java ?Stream API ?來處理數(shù)據(jù)集合。

          一個不錯的特性是支持對數(shù)字流的操作,比如sum操作。但是,我們不能以這種方式處理所有數(shù)值類型

          在本文中,我們將了解如何對諸如BigDecimal之類的數(shù)字流執(zhí)行sum操作。

          2. 如何用流求和

          Stream API 提供數(shù)字流 numbers Stream,包括?IntStream、DoubleStream、LongStream我們通過創(chuàng)建一個數(shù)字流來來搞清楚它們是如何工作的。然后,我們用?[IntStream#sum]?計算它的總數(shù):

          IntStream intNumbers = IntStream.range(0, 3);assertEquals(3, intNumbers.sum());

          我們可以從Doubles的列表開始執(zhí)行類似的操作。通過使用streams,我們可以使用?mapToDouble?將對象流轉(zhuǎn)換為Double stream

          List doubleNumbers = Arrays.asList(23.48, 52.26, 13.5);double result = doubleNumbers.stream()    .mapToDouble(Double::doubleValue)    .sum();assertEquals(89.24, result, .1);

          所以,如果我們能用同樣的方法總結(jié)出一組?BigDecimal?數(shù)字,那就很有用了。

          **不幸的是,沒有BigDecimalStream。**所以,我們需要另一個解決方案。

          3. 使用Reduce添加BigDecimal數(shù)字

          我們使用 *Stream.reduce*來計算sum:

          Stream intNumbers = Stream.of(5, 1, 100);int result = intNumbers.reduce(0, Integer::sum);assertEquals(106, result);

          這適用于任何可以邏輯相加的數(shù)據(jù),包括BigDecimal

          Stream bigDecimalNumber = ??Stream.of(BigDecimal.ZERO, BigDecimal.ONE, BigDecimal.TEN);BigDecimal result = bigDecimalNumber.reduce(BigDecimal.ZERO, BigDecimal::add);assertEquals(11, result);

          reduce方法有兩個參數(shù):

          • Identity?– 等于0–它是還原的起始值
          • Accumulator function?– 接受兩個參數(shù),目前為止的結(jié)果,以及流的下一個元素

          4. Conclusion

          本文中,我們研究了如何在數(shù)字中計算數(shù)字之和。以及如何使用reduce作為替代。

          【墻裂推薦】

          專注于「開發(fā)者」綜合成長的深度星球限時優(yōu)惠進(jìn)行中

          最近熱門內(nèi)容回顧? ?#技術(shù)人系列

          79570829767d09ba2d9a6401af45f0e0.webp



          下方二維碼關(guān)注我

          52a50514823e504cccb0093f9b976496.webp

          互聯(lián)網(wǎng)草根,堅持分享技術(shù)創(chuàng)業(yè)、產(chǎn)品心得和總結(jié)~



          f5b9855a85649d2a318db4d966f0aba9.webp

          點擊“閱讀原文”,領(lǐng)取 2020 年最新免費技術(shù)資料大全

          ↓↓↓?
          瀏覽 78
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  久久88 | 亚洲高清无码中字 | 亚洲三级久久 | 俺也去网 | 色婷婷综合激情 |