Map<String,Object> map = new HashMap<>();
map.put("name","张三");
map.put("age","30");
map.put("sex","男");
map.put("addr","深圳");
List<Map<String,Object>> list = new ArrayList<>();
list.add(map);
map = new HashMap<>();
map.put("name","李四");
map.put("age","31");
map.put("sex","男");
map.put("addr","北京");
list.add(map);
map = new HashMap<>();
map.put("name","王五");
map.put("age","35");
map.put("sex","男");
map.put("addr","深圳");
list.add(map);
// 根据addr住址分组
Map<String, List<Map<String, Object>>> addr = list.stream().collect(Collectors.groupingBy(m -> MapUtils.getString(m, "addr")));
System.out.println("分组"+addr);
// 遍历分组后的数据
addr.forEach((k,v)->{
System.out.println("map中的key:"+k);
v.forEach((kk)->{
System.out.println("listMap中的数据"+kk);
});
});
// 过滤,保留匹配的数据
List<Map<String, Object>> mapStream = list.stream().filter(m -> MapUtils.getString(m, "addr").equals("深圳")).collect(Collectors.toList());
System.out.println("过滤:"+mapStream);
// 过滤,第一条匹配的数据
Optional<Map<String, Object>> first = list.stream().filter(m -> MapUtils.getString(m, "addr").equals("深圳")).findFirst();
System.out.println("过滤:"+first);
// 去重
List<String> collect = list.stream().map(m -> MapUtils.getString(m, "addr")).distinct().collect(Collectors.toList());
System.out.println("去重"+collect);
// 升序
List<Map<String, Object>> sort1 = list.stream().sorted(Comparator.comparing(m -> MapUtils.getString(m, "age"))).collect(Collectors.toList());
System.out.println("升序"+sort1);
// 降序
List<Map<String, Object>> sort2 = list.stream().sorted(Comparator.comparing(m -> MapUtils.getString((Map) m, "age")).reversed()).collect(Collectors.toList());
System.out.println("降序:"+sort2);
//创建城市
List<String> cityList = new ArrayList<String>();
cityList.add("北京;上海;深圳;");
cityList.add("广州;武汉;杭州;");
// 将数据按照逗号分割组成完整的字符串
String collect1 = cityList.stream().map(c -> c.split(";")).flatMap(Arrays::stream).collect(Collectors.joining(","));
System.out.println("将数据按照逗号分割组成完整的字符串"+collect1);
输出结果: