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);
输出结果:
分组{北京=[{sex=男, name=李四, addr=北京, sage=31}], 深圳=[{sex=男, name=张三, addr=深圳, age=30}, {sex=男, name=王五, addr=深圳, age=35}]}
map中的key:北京
listMap中的数据{sex=男, name=李四, addr=北京, age=31}
map中的key:深圳
listMap中的数据{sex=男, name=张三, addr=深圳, age=30}
listMap中的数据{sex=男, name=王五, addr=深圳, age=35}
过滤:[{sex=男, name=张三, addr=深圳, age=30}, {sex=男, name=王五, addr=深圳, age=35}]
过滤:Optional[{sex=男, name=张三, addr=深圳, age=30}]
去重[深圳, 北京]
升序[{sex=男, name=张三, addr=深圳, age=30}, {sex=男, name=李四, addr=北京, age=31}, {sex=男, name=王五, addr=深圳, age=35}]
降序:[{sex=男, name=王五, addr=深圳, age=35}, {sex=男, name=李四, addr=北京, age=31}, {sex=男, name=张三, addr=深圳, age=30}]
将数据按照逗号分割组成完整的字符串北京,上海,深圳,广州,武汉,杭州