欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

如何使用lamda表達(dá)式對(duì)list進(jìn)行求和

 更新時(shí)間:2023年06月01日 15:25:22   作者:愛(ài)釣魚(yú)的Java  
這篇文章主要介紹了如何使用lamda表達(dá)式對(duì)list進(jìn)行求和問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

使用lamda表達(dá)式對(duì)list進(jìn)行求和

Lambda 表達(dá)式是 JDK8 的一個(gè)新特性,最近寫(xiě)項(xiàng)目中求和計(jì)算使用的較多,寫(xiě)篇文章記錄下。

1、實(shí)體類List返回Integer類型求和

//根據(jù)id查詢庫(kù)存
List<ProductStock> list = productStockMapper.selectList(Wrappers.<ProductStock>lambdaQuery().in(Product::id, idList))
//查詢所有庫(kù)存總和
Integer qtySum = list.stream().mapToInt(ProductStock::getStockQty).sum();

2、Integer類型List返回Integer類型求和

//查詢當(dāng)前所有商品庫(kù)存
List<Integer> stockList = productStockMapper.selectStock();
//查詢所有庫(kù)存總和
Integer stockSum = stockList .stream().mapToInt(Integer::intValue).sum();

3、實(shí)體類List返回Bigdecimal類型求和

//根據(jù)id查詢庫(kù)存
List<ProductStock> list = productStockMapper.selectList(Wrappers.<ProductStock>lambdaQuery().in(Product::id, idList))
//查詢所有庫(kù)存金額總和
BigDecimal stockAmt = list .stream().map(ProductStock::getStockAmt).reduce(BigDecimal::add).orElse(Bigdecimal.ZERO);

4、BigDecimal類List返回Bigdecimal類型求和

//查詢當(dāng)前所有商品庫(kù)存
List<Bigdecimal> stockList = productStockMapper.selectStock();
//查詢所有庫(kù)存金額總和
Bigdecimal stockAmt = stockList.stream().reduce(BigDecimal::add).orElse(Bigdecimal.ZERO);

**注:orElse(Bigdecimal.ZERO)而不是get(),是因?yàn)榉乐狗祷乜眨ù颂幦绻胓et(),在idea中也會(huì)有警告)。

最近用到的就這些,后續(xù)用到別的還會(huì)再更新!

list與Lamda表達(dá)式配合的常用方法

1、刪除所有值為400的元素

list.RemoveAll(e=>e==400);

2、刪除所有能被100整除的元素

list.RemoveAll(e=>e%100==0);

3、求和

int sum=0;
int result = list.ForEach(val=>sum+=val);

4、刪除所有值為400的元素

bool result = list.Exists(e=>e==400)

5、是否所有的元素都等于400

bool result = list.TrueForAll(e=>e==400)

6、返回能被100整除的元素(從前向后找)

var result = list.Find(e=>e%100==0);

6、返回能被100整除的元素(從后向前找)

var result = list.FindLast(e=>e%100==0);

7、返回能被100整除的List

var result = list.FindAll(e=>e%100==0);

8、返回能被100整除的索引(從前向后找)

int result = list.FindIndex(e=>e%100==0);

9、返回能被100整除的索引(從后向前找)

int result = list.FindLastIndex(e=>e%100==0);

10、二分查找(速度較快,它的原理是先把排序好的list分成2分,搜索中點(diǎn)值,發(fā)現(xiàn)值不對(duì),就可以砍掉這個(gè)分組,只剩下一半再查找)

list.Sort();//二分查找前先必須先升序排序
int result = list.BinarySearch(e=>e%100==0);

11、對(duì)類(引用類型)進(jìn)行排序(bookList.Sort()),需要類實(shí)現(xiàn)IComparable接口

internal class Book : IComparable<Book>
{
?? ?public int ID { get; set; }
?? ?public string Name { get; set; }
?? ?public double Price { get; set; }
?? ?public int CompareTo([AllowNull] Book other)
?? ?{
?? ??? ?if (other == null) return 1;
?? ??? ?return this.ID - other.ID;//返回正數(shù),this>other;返回0,this=other;返回負(fù)數(shù),this<other;
?? ?}
?? ?public override string ToString()
?? ?{
?? ??? ?return JsonSerializer.Serialize(this);
?? ?}
?? ?public override bool Equals(object obj)
?? ?{
?? ??? ?if (obj == null) return false;
?? ??? ?Book other = obj as Book;
?? ??? ?if (other.ID == this.ID && other.Name == this.Name && other.Price == this.Price) return true;
?? ??? ?return false;
?? ?}
}

12、對(duì)類(引用類型)進(jìn)行二分查找(bookList.BinarySearch()),只能查找相應(yīng)對(duì)象。如果只查找屬性一致的對(duì)象,需重寫(xiě)Equals()方法,如上所示。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java設(shè)計(jì)模式之建造者模式淺析示例

    Java設(shè)計(jì)模式之建造者模式淺析示例

    建造者模式,是一種對(duì)象構(gòu)建模式 它可以將復(fù)雜對(duì)象的建造過(guò)程抽象出來(lái),使這個(gè)抽象過(guò)程的不同實(shí)現(xiàn)方法可以構(gòu)造出不同表現(xiàn)的對(duì)象。本文將通過(guò)示例講解建造者模式,需要的可以參考一下
    2022-11-11
  • 淺談java String.split丟失結(jié)尾空字符串的問(wèn)題

    淺談java String.split丟失結(jié)尾空字符串的問(wèn)題

    下面小編就為大家?guī)?lái)一篇淺談java String.split丟失結(jié)尾空字符串的問(wèn)題。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-02-02
  • Springboot整合SpringSecurity的完整案例詳解

    Springboot整合SpringSecurity的完整案例詳解

    Spring Security是基于Spring生態(tài)圈的,用于提供安全訪問(wèn)控制解決方案的框架,Spring Security登錄認(rèn)證主要涉及兩個(gè)重要的接口 UserDetailService和UserDetails接口,本文對(duì)Springboot整合SpringSecurity過(guò)程給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2024-01-01
  • Java swing實(shí)現(xiàn)酒店管理系統(tǒng)

    Java swing實(shí)現(xiàn)酒店管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了Java swing實(shí)現(xiàn)酒店管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-02-02
  • SpringBoot利用@Validated注解優(yōu)雅實(shí)現(xiàn)參數(shù)校驗(yàn)

    SpringBoot利用@Validated注解優(yōu)雅實(shí)現(xiàn)參數(shù)校驗(yàn)

    在開(kāi)發(fā) Web 應(yīng)用時(shí),用戶輸入的合法性校驗(yàn)是保障系統(tǒng)穩(wěn)定性的基礎(chǔ),?Spring Boot 的 @Validated 注解 提供了一種更優(yōu)雅的解決方案,下面就跟隨小編一起學(xué)習(xí)一下吧
    2025-04-04
  • 解決DataInputStream?read不等于-1,socket文件傳輸只能傳輸一個(gè)文件無(wú)法傳輸多個(gè)問(wèn)題

    解決DataInputStream?read不等于-1,socket文件傳輸只能傳輸一個(gè)文件無(wú)法傳輸多個(gè)問(wèn)題

    這篇文章主要介紹了解決DataInputStream?read不等于-1,socket文件傳輸只能傳輸一個(gè)文件無(wú)法傳輸多個(gè)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • 在SpringBoot中更改默認(rèn)端口的方法總結(jié)

    在SpringBoot中更改默認(rèn)端口的方法總結(jié)

    在本文中,小編將帶大家學(xué)習(xí)如何在 Spring Boot 中更改默認(rèn)端口,默認(rèn)情況下,嵌入式 Web 服務(wù)器使用 8080端口來(lái)啟動(dòng) Spring 引導(dǎo)應(yīng)用程序,有幾種方法可以更改該端口,文中介紹的非常詳細(xì),需要的朋友可以參考下
    2023-07-07
  • Java?死鎖解決方案順序鎖和輪詢鎖

    Java?死鎖解決方案順序鎖和輪詢鎖

    這篇文章主要介紹了Java?死鎖解決方案順序鎖和輪詢鎖,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-05-05
  • mybatis的插件機(jī)制示例詳解

    mybatis的插件機(jī)制示例詳解

    這篇文章主要給大家介紹了關(guān)于mybatis插件機(jī)制的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用mybatis具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • kafka生產(chǎn)者和消費(fèi)者的javaAPI的示例代碼

    kafka生產(chǎn)者和消費(fèi)者的javaAPI的示例代碼

    這篇文章主要介紹了kafka生產(chǎn)者和消費(fèi)者的javaAPI的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-06-06

最新評(píng)論