在日常工作中我们都会遇到将数据进行分组的需求
- 那么在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) {
ListfooList = 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<list>> groupList = new ArrayList<>();
// 分组方式一
fooList.stream()
.collect(Collectors.groupingBy(Foo::getName, Collectors.toList()))
.forEach((name, fooListByName) -> {
groupList.add(fooListByName);
});
\t
// 分组方式二
Map<string>> groupMap = fooList.stream().collect(Collectors.groupingBy(Foo::getName));
System.out.println(JSON.toJSONString(groupList));
System.out.println(JSON.toJSONString(groupMap));
}
}/<string>/<list>
输出结果:
- 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
}
]
}
刚入驻今日头条,感兴趣对童鞋可以关注本作者。后期会慢慢分享一些教程以及经验。打算后期为大家写一个简易的微服务教程,以及作者使用微服务在开发中遇到的一些问题,以及怎么解决的经验分享给大家!自动化部署项目等
閱讀更多 java客棧的小二 的文章