# 1. 分组
# 1.1. entity实体User分组
Map<String, List<User>> groupBySex = userList.stream().collect(Collectors.groupingBy(User::getSex));
# 1.2. Map<String,Object>对象分组
protected static List<Map<String, Object>> target;
Map<String, List<Map<String, Object>>> classifyData =
target.stream()
.collect(Collectors.groupingBy(n -> String.valueOf(n.get("classify_id"))));
# 1.3. 多字段分组
Map<String, List<Map<String, Object>>> target2=
target.stream()
.collect(Collectors.groupingBy(n -> n.getOrDefault("aa", n.getOrDefault("bb", ""))
+ "_" + n.getOrDefault("cc","")
+ "_" + n.getOrDefault("dd","")
+ "_" + n.getOrDefault("ee","")));
// 获取结果集
List<Map<String,Object>> target3= new ArrayList<>();
for (Map.Entry<String, List<Map<String, Object>>> entryData : target2.entrySet()) {
// 获取结果集
String[] splitData = entryData.getKey().split("_");
if (splitData.length == 4) {
Map<String, Object> middleData = Map.of("aa", splitData[0],
"bb", splitData[1],
"cc", splitData[2],
"dd", splitData[3],
"ff", entryData.getValue().size());
// 存放结果集
target3.add(middleData);
}
}
# 2. 排序
# 2.1. entity实体User单字段排序(正序)
data.stream().sorted(Comparator.comparing(User::getUserId)).collect(Collectors.toList());
# 2.2. entity实体User单字段排序(倒序)
data.stream().sorted(Comparator.comparing(User::getUserId).reversed()).collect(Collectors.toList());
# 2.3. entity实体User多字段排序
userList.sort(Comparator.comparing(User::getId).thenComparing(User::getAge));
# 2.4. 对于List<Map<String,Object>>排序 (注:正序v1.compareTo.v2 倒序v2.compareTo.v1)
List<Map<String,Object>> target4 = new ArrayList<>();
Collections.sort(target4,
(v1,v2) -> String.valueOf(v2.get("count")).compareTo(String.valueOf(v1.get("count"))));
# 2.5. 对Map<String,Integer>排序(正序)
lineChartData = lineChartData.entrySet().stream()
.sorted(Map.Entry.comparingByKey())
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue,
(oleValue, newValue) -> oleValue, LinkedHashMap::new));
# 2.6. 对Map<String,Integer>排序(倒序)
target5= target5.entrySet()
.stream()
.sorted(Map.Entry.comparingByValue(Comparator.reverseOrder()))
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue,
(oldValue, newValue) -> oldValue, LinkedHashMap::new));
或者
target6 = target6.entrySet()
.stream()
.sorted(Map.Entry.comparingByValue(Comparator.reverseOrder()))
.limit(5)
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue,
(oldValue, newValue) -> oldValue, LinkedHashMap::new));
lamda常用操作
最新推荐文章于 2024-07-19 16:32:51 发布
本文详细介绍了Java中对实体对象User进行分组(按性别)、Map对象分组、多字段分组,并演示了如何对实体User进行单字段排序(正序/倒序)以及List<Map<String, Object>>和Map<String, Integer>的排序。涉及的技术包括流API、Comparator和数据结构操作。
475

被折叠的 条评论
为什么被折叠?



