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

Java 將List中的實體類按照某個字段進(jìn)行分組并存放至Map中操作

 更新時間:2020年10月10日 11:41:19   作者:hui008  
這篇文章主要介紹了Java 將List中的實體類按照某個字段進(jìn)行分組并存放至Map中操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

1、JDK1.8之前:

假設(shè)有實體類User,里面有字段id,我們將相同id的User進(jìn)行分組,并存放在Map中。(例子不是很恰當(dāng),但很能說明問題)

public static void main(String[] args) {
 List<User> list = new ArrayList<>();
 list.add(new User(1, 1));
 list.add(new User(1, 2));
 list.add(new User(2, 1));
 list.add(new User(2, 3));
 list.add(new User(2, 2));
 list.add(new User(3, 1));
 Map<Integer, List<User>> map = new HashMap<>();
 for(User user : list){
 if(map.containsKey(user.getId())){//map中存在此id,將數(shù)據(jù)存放當(dāng)前key的map中
 map.get(user.getId()).add(user);
 }else{//map中不存在,新建key,用來存放數(shù)據(jù)
 List<User> tmpList = new ArrayList<>();
 tmpList.add(user);
 map.put(user.getId(), tmpList);
 }
 }
 System.out.println(map.toString());
 }

執(zhí)行結(jié)果:

可以看到達(dá)到了了我們的目的

2、JDK1.8 新特性實現(xiàn)

Map<Integer, List<User>> map = list.stream().collect(Collectors.groupingBy(User::getId));

附上

List<Map<String, Object>>>分組
List<Map<String, Object>>> list = new ArrayList<>();
Map<Long, List<Map<String, Object>>> contractIdMap =
 list.stream().collect(Collectors.groupingBy(m -> (Long.parseLong(m.get("contractId").toString()))));
Map<Long, List<Map<String, Object>>> nameMap =
 list.stream().collect(Collectors.groupingBy(m -> (m.get("name").toString())));

補充知識:java中對list的數(shù)據(jù)按照某個屬性進(jìn)行分組,拆分成多個list

我就廢話不多說了,大家還是直接看代碼吧~

/**
* 按照List<Map<String,Object>>里面map的某個value重新封裝成多個不同的list, 原始數(shù)據(jù)類型List<Map
* <String,Object>>, 轉(zhuǎn)換后數(shù)據(jù)類型Map<String,List<Map<String,Object>>>
*
* @param list
* @param oneMapKey
* @return
*/
private static Map<String, Object> change(List<Map<String, Object>> list, String oneMapKey) {
Map<String, Object> resultMap = new HashMap<String, Object>();
Set setTmp = new HashSet();
for (Map<String, Object> tmp : list) {
setTmp.add(tmp.get(oneMapKey));
}
Iterator it = setTmp.iterator();
while (it.hasNext()) {
String oneSetTmpStr = (String) it.next();
List<Map<String, Object>> oneSetTmpList = new ArrayList<Map<String, Object>>();
for (Map<String, Object> tmp : list) {
String oneMapValueStr = (String) tmp.get(oneMapKey);
if (oneMapValueStr.equals(oneSetTmpStr)) {
oneSetTmpList.add(tmp);
}
}
resultMap.put(oneSetTmpStr, oneSetTmpList);
}
return resultMap;
}

以上這篇Java 將List中的實體類按照某個字段進(jìn)行分組并存放至Map中操作就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • JAVA發(fā)送HTTP請求的多種方式詳細(xì)總結(jié)

    JAVA發(fā)送HTTP請求的多種方式詳細(xì)總結(jié)

    目前做項目中有一個需求是這樣的,需要通過Java發(fā)送url請求,查看該url是否有效,這時我們可以通過獲取狀態(tài)碼來判斷,下面這篇文章主要給大家介紹了關(guān)于JAVA發(fā)送HTTP請求的多種方式總結(jié)的相關(guān)資料,需要的朋友可以參考下
    2023-01-01
  • SpringMVC結(jié)合模板模式實現(xiàn)MyBatisPlus傳遞嵌套JSON數(shù)據(jù)

    SpringMVC結(jié)合模板模式實現(xiàn)MyBatisPlus傳遞嵌套JSON數(shù)據(jù)

    我們經(jīng)常會遇到需要傳遞對象的場景,有時候,我們需要將一個對象的數(shù)據(jù)傳遞給另一個對象進(jìn)行處理,但是又不希望直接暴露對象的內(nèi)部結(jié)構(gòu)和實現(xiàn)細(xì)節(jié),所以本文給大家介紹了SpringMVC結(jié)合模板模式實現(xiàn)MyBatisPlus傳遞嵌套JSON數(shù)據(jù),需要的朋友可以參考下
    2024-03-03
  • Java中Thread類詳解及常用的方法

    Java中Thread類詳解及常用的方法

    在java中談到線程,必然少不了Thread類,下面這篇文章主要給大家介紹了關(guān)于Java中Thread類及常用的方法,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-05-05
  • Java中的String不可變性實現(xiàn)

    Java中的String不可變性實現(xiàn)

    在Java編程中,String類的不可變性是一個被廣泛討論和利用的特性,本文主要介紹了Java中的String不可變性實現(xiàn),具有一定的參考價值,感興趣的可以了解一下
    2024-03-03
  • Java經(jīng)典面試題之NIO多路復(fù)用

    Java經(jīng)典面試題之NIO多路復(fù)用

    JAVA?NIO?的多路復(fù)用是面試中經(jīng)常被問的問題,今天我們徹底搞明白究竟是怎么回事,文中的示例代碼講解詳細(xì),希望對大家學(xué)習(xí)Java有所幫助
    2023-06-06
  • java實現(xiàn)銀行家算法(Swing界面)

    java實現(xiàn)銀行家算法(Swing界面)

    這篇文章主要為大家詳細(xì)介紹了銀行家算法的java代碼實現(xiàn),Swing寫的界面,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • Java中NIO的三大核心組件詳細(xì)解析

    Java中NIO的三大核心組件詳細(xì)解析

    這篇文章主要介紹了Java中NIO的三大核心組件詳細(xì)解析,NIO的Buffer類是一個抽象類,位于java.nio包中,提供了一組更加有效的方法,用來進(jìn)行寫入和讀取的交替訪問,本質(zhì)上是一個內(nèi)存塊,既可以寫入數(shù)據(jù),也可以從中讀取數(shù)據(jù),需要的朋友可以參考下
    2023-12-12
  • mybatisplus下劃線駝峰轉(zhuǎn)換的問題解決

    mybatisplus下劃線駝峰轉(zhuǎn)換的問題解決

    在mybatis-plus中,下劃線-駝峰自動轉(zhuǎn)換可能導(dǎo)致帶下劃線的字段查詢結(jié)果為null,本文就來介紹一下mybatisplus下劃線駝峰轉(zhuǎn)換的問題解決,感興趣的可以了解一下
    2024-10-10
  • java web圖片上傳和文件上傳實例

    java web圖片上傳和文件上傳實例

    本篇文章主要介紹了java web圖片上傳和文件上傳實例,具有一定的參考價值,有需要的可以了解一下。
    2016-11-11
  • java 數(shù)據(jù)庫連接與增刪改查操作實例詳解

    java 數(shù)據(jù)庫連接與增刪改查操作實例詳解

    這篇文章主要介紹了java 數(shù)據(jù)庫連接與增刪改查操作,結(jié)合實例形式詳細(xì)分析了java使用jdbc進(jìn)行數(shù)據(jù)庫連接及增刪改查等相關(guān)操作實現(xiàn)技巧與注意事項,需要的朋友可以參考下
    2019-11-11

最新評論

鲁山县| 天台县| 南充市| 东兴市| 阜平县| 宿松县| 四会市| 星子县| 公主岭市| 宜川县| 奉节县| 长寿区| 永城市| 常熟市| 涞水县| 乾安县| 黑水县| 古交市| 小金县| 泊头市| 济阳县| 石楼县| 武平县| 栾川县| 比如县| 大荔县| 和田县| 凤翔县| 密山市| 永定县| 大连市| 黄陵县| 尼玛县| 衢州市| 彩票| 南丹县| 萍乡市| 桐庐县| 收藏| 盱眙县| 清新县|