对List<Map<String,Object>>进行分组
时间: 2025-09-03 16:18:07 AIGC 浏览: 4
在 Java 中,对 `List<Map<String,Object>>` 进行分组可以使用 Java 8 的 Lambda 新特性结合 `Collectors.groupingBy` 方法实现。该方法可以根据 `Map` 中的某个属性进行分组,返回结果是 `Map<String,List<Map<String,Object>>>`。
以下是示例代码:
```java
import java.util.*;
import java.util.stream.Collectors;
public class GroupingExample {
public static void main(String[] args) {
List<Map<String,Object>> list = new ArrayList<>();
Map<String,Object> map1 = new HashMap<>();
map1.put("分组","A");
map1.put("map","map1");
list.add(map1);
Map<String,Object> map2 = new HashMap<>();
map2.put("分组","B");
map2.put("map","map2");
list.add(map2);
Map<String,Object> map3 = new HashMap<>();
map3.put("分组","A");
map3.put("map","map3");
list.add(map3);
Map<String,Object> map4 = new HashMap<>();
map4.put("分组","B");
map4.put("map","map4");
list.add(map4);
// 使用 Collectors.groupingBy 方法根据 "分组" 属性进行分组
Map<String,List<Map<String,Object>>> mapList = list.stream()
.collect(Collectors.groupingBy((Map m) -> (String) m.get("分组")));
// 输出分组结果
System.out.println(mapList);
}
}
```
在上述代码中,首先创建了一个 `List<Map<String,Object>>` 类型的列表,并向其中添加了几个 `Map` 元素。然后使用 `stream()` 方法将列表转换为流,接着使用 `Collectors.groupingBy` 方法根据 `Map` 中的 `"分组"` 属性进行分组,最后将分组结果存储在 `Map<String,List<Map<String,Object>>>` 类型的 `mapList` 中并输出。
另一个示例代码如下,通过自定义方法来生成分组的键:
```java
import java.util.*;
import java.util.stream.Collectors;
public class AnotherGroupingExample {
public void aaa(){
List<Map<String,Object>> list = new ArrayList<>();
Map<String,Object> map = new HashMap<>();
map.put("dicId","aaa");
map.put("dicName","钢材");
map.put("dicDes","钢材1号");
list.add(map);
map = new HashMap<>();
map.put("dicId","bbb");
map.put("dicName","钢筋");
map.put("dicDes","钢筋1号");
list.add(map);
map = new HashMap<>();
map.put("dicId","111");
map.put("dicName","钢筋");
map.put("dicDes","钢筋2号");
list.add(map);
map = new HashMap<>();
map.put("dicId","ccc");
map.put("dicName","河沙");
map.put("dicDes","河沙1号");
list.add(map);
// 使用自定义方法 customKey 生成分组的键
Map<String, List<Map<String, Object>>> collect = list.stream()
.collect(Collectors.groupingBy(this::customKey));
}
private String customKey(Map<String,Object> map){
return map.get("dicId").toString();
}
}
```
在这个示例中,定义了一个 `customKey` 方法,用于根据 `Map` 中的 `"dicId"` 属性生成分组的键,然后使用 `Collectors.groupingBy` 方法结合该自定义方法对列表进行分组。
阅读全文
相关推荐




















