作者:加州旅馆在南京_380 | 来源:互联网 | 2022-03-02 11:05
今天小编就为大家分享一篇关于JAVAJDK8List分组的实现和用法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
概述
对List
进行分组是日常开发中,经常遇到的,在JDK 8
中对List
按照某个属性分组的代码,超级简单。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | 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 , "优惠券1" );
Coupon coupon2 = new Coupon( 2 , 200 , "优惠券2" );
Coupon coupon3 = new Coupon( 3 , 300 , "优惠券3" );
Coupon coupon4 = new Coupon( 3 , 400 , "优惠券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));
}
}</integer,></coupon>
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | 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;
}
}
|
上面的例子是对List
按照couponId
分组,couponId
一样的,归为一组。打印结果如下:
{
1:[
{
"couponId":1,
"name":"优惠券1",
"price":100
}
],
2:[
{
"couponId":2,
"name":"优惠券2",
"price":200
}
],
3:[
{
"couponId":3,
"name":"优惠券3",
"price":300
},
{
"couponId":3,
"name":"优惠券4",
"price":400
}
]
}
如果分组后,分组内并不想是对象,而是对象的属性,也可以做到的。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | 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 , "优惠券1" );
Coupon coupon2 = new Coupon( 2 , 200 , "优惠券2" );
Coupon coupon3 = new Coupon( 3 , 300 , "优惠券3" );
Coupon coupon4 = new Coupon( 3 , 400 , "优惠券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));
}
}</integer,></coupon>
|
这样分组内就是name
属性了。打印结果如下:
{
1:[
"优惠券1"
],
2:[
"优惠券2"
],
3:[
"优惠券3",
"优惠券4"
]
}
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。如果你想了解更多相关内容请查看下面相关链接