JAVA JDK8 List分組的實(shí)現(xiàn)和用法
概述
對(duì)List
進(jìn)行分組是日常開發(fā)中,經(jīng)常遇到的,在JDK 8
中對(duì)List
按照某個(gè)屬性分組的代碼,超級(jí)簡(jiǎn)單。
package test; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.serializer.SerializerFeature; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.stream.Collectors; public class ListGroupTest { public static void main(String[] args) { List<Coupon> couponList = new ArrayList<>(); Coupon coupon1 = new Coupon(1,100,"優(yōu)惠券1"); Coupon coupon2 = new Coupon(2,200,"優(yōu)惠券2"); Coupon coupon3 = new Coupon(3,300,"優(yōu)惠券3"); Coupon coupon4 = new Coupon(3,400,"優(yōu)惠券4"); couponList.add(coupon1); couponList.add(coupon2); couponList.add(coupon3); couponList.add(coupon4); Map<Integer, List<Coupon>> resultList = couponList.stream().collect(Collectors.groupingBy(Coupon::getCouponId)); System.out.println(JSON.toJSONString(resultList, SerializerFeature.PrettyFormat)); } }
package test; public class Coupon { private Integer couponId; private Integer price; private String name; public Coupon(Integer couponId, Integer price, String name) { this.couponId = couponId; this.price = price; this.name = name; } public Integer getCouponId() { return couponId; } public void setCouponId(Integer couponId) { this.couponId = couponId; } public Integer getPrice() { return price; } public void setPrice(Integer price) { this.price = price; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
上面的例子是對(duì)List
按照couponId
分組,couponId
一樣的,歸為一組。打印結(jié)果如下:
{
1:[
{
"couponId":1,
"name":"優(yōu)惠券1",
"price":100
}
],
2:[
{
"couponId":2,
"name":"優(yōu)惠券2",
"price":200
}
],
3:[
{
"couponId":3,
"name":"優(yōu)惠券3",
"price":300
},
{
"couponId":3,
"name":"優(yōu)惠券4",
"price":400
}
]
}
如果分組后,分組內(nèi)并不想是對(duì)象,而是對(duì)象的屬性,也可以做到的。
package test; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.serializer.SerializerFeature; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.stream.Collectors; public class ListGroupTest2 { public static void main(String[] args) { List<Coupon> couponList = new ArrayList<>(); Coupon coupon1 = new Coupon(1,100,"優(yōu)惠券1"); Coupon coupon2 = new Coupon(2,200,"優(yōu)惠券2"); Coupon coupon3 = new Coupon(3,300,"優(yōu)惠券3"); Coupon coupon4 = new Coupon(3,400,"優(yōu)惠券4"); couponList.add(coupon1); couponList.add(coupon2); couponList.add(coupon3); couponList.add(coupon4); Map<Integer, List<String>> resultList = couponList.stream().collect(Collectors.groupingBy(Coupon::getCouponId,Collectors.mapping(Coupon::getName,Collectors.toList()))); System.out.println(JSON.toJSONString(resultList, SerializerFeature.PrettyFormat)); } }
這樣分組內(nèi)就是name
屬性了。打印結(jié)果如下:
{
1:[
"優(yōu)惠券1"
],
2:[
"優(yōu)惠券2"
],
3:[
"優(yōu)惠券3",
"優(yōu)惠券4"
]
}
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接
相關(guān)文章
Java開發(fā)者結(jié)合Node.js編程入門教程
這篇文章主要介紹了Java開發(fā)者結(jié)合Node.js編程入門教程,我將先向您展示如何使用Java EE創(chuàng)建一個(gè)簡(jiǎn)單的Rest服務(wù)來讀取 MongoDB數(shù)據(jù)庫(kù)。然后我會(huì)用node.js來實(shí)現(xiàn)相同的功能,需要的朋友可以參考下2014-09-09Struts2中Action三種接收參數(shù)形式與簡(jiǎn)單的表單驗(yàn)證功能
本文以登錄驗(yàn)證為例,進(jìn)行代碼展示,下面給大家詳細(xì)介紹Struts2中Action三種接收參數(shù)形式與簡(jiǎn)單的表單驗(yàn)證功能,需要的朋友參考下2017-03-03Java線程之join_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
join() 定義在Thread.java中,下文通過源碼分享join(),需要的朋友參考下吧2017-05-05springboot自動(dòng)配置原理以及spring.factories文件的作用詳解
這篇文章主要介紹了springboot自動(dòng)配置原理以及spring.factories文件的作用詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-10-10Mybatis查不到數(shù)據(jù)查詢返回Null問題
mybatis突然查不到數(shù)據(jù),查詢返回的都是Null,但是 select count(*) from xxx查詢數(shù)量,返回卻是正常的。好多朋友遇到這樣的問題不知所措,下面小編通過本教程簡(jiǎn)單給大家說明下2016-08-08java的jdk基礎(chǔ)知識(shí)點(diǎn)總結(jié)
在本篇文章里小編給大家整理的是一篇關(guān)于java的jdk基礎(chǔ)知識(shí)點(diǎn)總結(jié)內(nèi)容,有興趣的朋友們可以學(xué)習(xí)參考下。2021-01-01Spring Boot 實(shí)現(xiàn)敏感詞及特殊字符過濾處理
這篇文章主要介紹了SpringBoot實(shí)現(xiàn)敏感詞及特殊字符過濾處理方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06Spring security 如何開放 Swagger 訪問權(quán)限
這篇文章主要介紹了Spring security 如何開放 Swagger 訪問權(quán)限操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09JavaSE實(shí)現(xiàn)圖書管理系統(tǒng)的示例代碼
這篇博客是在學(xué)習(xí)了一部分Java基礎(chǔ)語(yǔ)法之后的練習(xí)項(xiàng)目,通過這個(gè)小項(xiàng)目的練習(xí),對(duì)Java中的類和對(duì)象,抽象類和接口等進(jìn)行熟悉理解??旄S小編一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08