![778e3c2b4964a6575a5a6ef810e036d0.png](https://img-blog.csdnimg.cn/img_convert/778e3c2b4964a6575a5a6ef810e036d0.png)
哈哈,当我还是学生时自学PS披的第一张图就拿来发布第一篇文章
在日常工作中我们都会遇到将数据进行分组的需求
- 那么在Java 中如何将简单又方便的将list集合进行分组呢?
- 在java8特性中我们可以使用stream流很方便的对集合进行操作
- 下面将以两种方式进行分组操作(java8中还有其他操作可以分组,这里只介绍两种,其他方式大同小异)
list 分组归类代码
import com.alibaba.fastjson.JSON;import java.util.ArrayList;import java.util.List;import java.util.Map;import java.util.stream.Collectors;/** * @author caizw */public class Foo { private String name; private String type; private Double typeValue; private Integer count; public Foo(String name, String type, Double typeValue, Integer count) { this.name = name; this.type = type; this.typeValue = typeValue; this.count = count; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getType() { return type; } public void setType(String type) { this.type = type; } public Double getTypeValue() { return typeValue; } public void setTypeValue(Double typeValue) { this.typeValue = typeValue; } public Integer getCount() { return count; } public void setCount(Integer count) { this.count = count; } @Override public String toString() { return "Foo{" + "name='" + name + ''' + ", type='" + type + ''' + ", typeValue=" + typeValue + ", count=" + count + '}'; } public static void main(String[] args) { List fooList = new ArrayList<>(); fooList.add(new Foo("A", "san", 1.0, 2)); fooList.add(new Foo("A", "nas", 13.0, 1)); fooList.add(new Foo("B", "san", 112.0, 3)); fooList.add(new Foo("C", "san", 43.0, 5)); fooList.add(new Foo("B", "nas", 77.0, 7)); List> groupList = new ArrayList<>(); // 分组方式一 fooList.stream() .collect(Collectors.groupingBy(Foo::getName, Collectors.toList())) .forEach((name, fooListByName) -> { groupList.add(fooListByName); });// 分组方式二 Map> groupMap = fooList.stream().collect(Collectors.groupingBy(Foo::getName)); System.out.println(JSON.toJSONString(groupList)); System.out.println(JSON.toJSONString(groupMap)); }}
输出结果:
- groupList
[ [ { "count": 2, "name": "A", "type": "san", "typeValue": 1 }, { "count": 1, "name": "A", "type": "nas", "typeValue": 13 } ], [ { "count": 3, "name": "B", "type": "san", "typeValue": 112 }, { "count": 7, "name": "B", "type": "nas", "typeValue": 77 } ], [ { "count": 5, "name": "C", "type": "san", "typeValue": 43 } ]]
- groupMap
{ "A": [ { "count": 2, "name": "A", "type": "san", "typeValue": 1 }, { "count": 1, "name": "A", "type": "nas", "typeValue": 13 } ], "B": [ { "count": 3, "name": "B", "type": "san", "typeValue": 112 }, { "count": 7, "name": "B", "type": "nas", "typeValue": 77 } ], "C": [ { "count": 5, "name": "C", "type": "san", "typeValue": 43 } ]}
刚入驻今日头条,感兴趣对童鞋可以关注本作者。后期会慢慢分享一些教程以及经验。打算后期为大家写一个简易的微服务教程,以及作者使用微服务在开发中遇到的一些问题,以及怎么解决的经验分享给大家!自动化部署项目等