1.解决问题:List中存了很多Map,每个Map中,根据type字段进行分组。
2.数据结构
public static void main(String[] args) {
List<Map<String, Object>> list = new ArrayList<>();
Map<String, Object> map1 =new HashMap<>();
map1.put("name","华为K40");
map1.put("type","手机");
Map<String, Object> map2 =new HashMap<>();
map2.put("name","iphone12");
map2.put("type","手机");
Map<String, Object> map3 =new HashMap<>();
map3.put("name","戴尔");
map3.put("type","电脑");
Map<String, Object> map4 =new HashMap<>();
map4.put("name","兰博基尼");
map4.put("type","汽车");
list.add(map1);
list.add(map2);
list.add(map3);
list.add(map4);
//1.第一种方法
Map<String, List<Map<String, Object>>> groupMap1 = list.stream().collect(Collectors.groupingBy(x->x.get("type").toString()));
//2.第二种方法
Function<Map<String,Object>,String> s = new Function<Map<String, Object>, String>() {
@Override
public String apply(Map<String, Object> map) {
Object o = map.get("type");
return o.toString();
}
};
Map<String, List<Map<String, Object>>> groupMap2 = list.stream().collect(Collectors.groupingBy(s));
//打印结果
System.out.println(groupMap1);
System.out.println("手机:"+groupMap1.get("手机"));
System.out.println(groupMap2);
}
3.结果