Lambda表示式轉換List整理

2021-09-27 04:16:05 字數 2121 閱讀 9687

lambda 通用list轉map

lambda表示式對list常見轉換整理

基於如下物件進行操作

@data  //lombok 註解,替代get、set方法

public class myobject

}

//目標list

listmyobjectlist = new arraylist<>();
1、獲取物件myobjectlist中某乙個字段組裝list

listskucodelist = myobjectlist.stream().map(myobject::getskucode).collect(collectors.tolist());
2、求和物件myobjectlist中某乙個字段

integer sumnum = myobjectlist.stream().maptoint(scsproductdxreport::getskunum).sum();
3、獲取物件myobjectlist中某乙個字段作為key,物件作為value的map

maptargetmap= new hashmap<>();

targetmap.putall(myobjectlist.stream().collect(collectors.tomap(myobject::getskucode, function.identity())));

4、獲取物件myobjectlist中某乙個字段作為key,另乙個字段作為value的map

maptargetmap= new hashmap<>();

targetmap.putall(myobjectlist.stream().collect(collectors.tomap(myobject::getskucode, object::getnum)));

5、獲取物件myobjectlist中某幾個字段作為key,或某幾個字段作為value的map中的key,在對應myobject中增加拼接的get方法替換某個欄位的get方法即可,按需定義:

maptargetmap= new hashmap<>();

targetmap.putall(myobjectlist.stream().collect(collectors.tomap(myobject::getkey, object::getnum)));

maptargetmap= new hashmap<>();

targetmap.putall(myobjectlist.stream().collect(collectors.tomap(myobject::getskucode, object::getkey)));

6、獲取以某個欄位做為key,對應物件list作為value的分組map

map> targetmap= myobjectlist.stream().collect(collectors.groupingby(myobject::gewarehouseid));
ps:filter資料過濾

我們想要list裡面某些特定的資料,

如skucode不為空的資料,則在stream()之後加上filter過濾即可

例:

listskucodelist = myobjectlist.stream().filter(item -> !stringutils.isempty(item.getskucode())).map(myobject::getskucode).collect(collectors.tolist());
其中**filter(item -> !stringutils.isempty(item.getskucode()))**為具體的過濾條件,類似if()判斷

若我們想剝離出某個欄位去重後的list,可以使用distinct()

例 1中想要獲取去重後的skucode:

listskucodelist = myobjectlist.stream().map(myobject::getskucode).distinct().collect(collectors.tolist());

lambda表示式 lambda表示式

1.概述 c 11 中的 lambda 表示式用於定義並建立匿名的函式物件,以簡化程式設計工作。lambda 的語法形式如下 函式物件引數 操作符過載函式引數 mutable 或 exception 宣告 返回值型別可以看到,lambda 主要分為五個部分 函式物件引數 操作符過載函式引數 muta...

Lambda表示式對List的處理

忘記是在哪看到的了,很久以前收藏的,現在轉存在這裡 定義乙個employee類 public class employee public string lastname public decimal salary public bool ismanager 再定義乙個employee的列表 list...

Lambda表示式和Lambda表示式樹

原版來自 linq學習筆記之二 lambda表示式和lambda表示式樹 lambda 表示式 lambda expressions 是linq實現的另一特性。lambda表示式的作用就是使用使用函式式語法,將方法實現關聯到委託例項。在使用查詢表示式 query expressions 時,查詢表示...