Map<String, Student> storage = new TreeMap<>((o1, o2) -> o2.compareTo(o1))
时间: 2024-04-26 15:26:57 浏览: 11
这是一个使用Java 8 Lambda表达式实现的Map构造函数,它创建了一个新的TreeMap,其中键以逆序排序,并且值是Student类型的对象。具体来说,Lambda表达式 `(o1, o2) -> o2.compareTo(o1)` 表示比较器,它将两个对象作为参数并返回一个int值,表示它们的顺序关系。在这种情况下,它使用 `compareTo` 方法将第二个对象与第一个对象进行比较,以实现逆序排序。因此,这个Map中的键按照逆序排列,并且值是Student类型的对象,可以通过键来访问相应的学生对象。
相关问题
Map<String, List<GetRecruitListOutBO>> sortedMap = new TreeMap<>(Collections.reverseOrder()); 将这个map的key作为新map集合的value,val作为新map的value
可以使用 Java 8 的流式编程和 Lambda 表达式来实现这个功能。可以按照以下步骤操作:
1. 创建一个新的 Map 对象。
2. 使用 forEach() 方法迭代原始的 Map 对象中的每个 Entry 对象。
3. 将原始 Map 中的 Entry 对象的 key 作为新 Map 的 value,将 Entry 对象的 value 作为新 Map 的 key,并将其添加到新的 Map 中。
下面是示例代码:
```
Map<String, List<GetRecruitListOutBO>> sortedMap = new TreeMap<>(Collections.reverseOrder());
// 创建新的 Map 对象
Map<List<GetRecruitListOutBO>, String> newMap = new HashMap<>();
// 迭代原始的 Map 对象,并将其转换为新的 Map 对象
sortedMap.forEach((key, value) -> newMap.put(value, key));
// 输出新的 Map 对象
System.out.println(newMap);
```
这段代码将会把 sortedMap 中的 key 转换为新 Map 的 value,将 sortedMap 中的 value 转换为新 Map 的 key,并将它们添加到新的 Map 中。注意,这里使用了 Collections.reverseOrder() 方法来创建一个反向的 TreeMap 对象,以便按照原始 Map 中的 key 降序排序。
UserInfo userInfo=userProvider.get(); OrganizeEntity organize = organizeService.getById(userInfo.getDepartmentId()); TreeMap<String, List<TzglInvestmentPlanProjectModel>> investmentPlanProjectMap = tzglInvestmentPlanService.selectProjectDetial(params,organize); for (String key : investmentPlanProjectMap.keySet()) { List<TzglInvestmentPlanProjectModel> projectList = investmentPlanProjectMap.get(key); for (TzglInvestmentPlanProjectModel investmentPlanProject: projectList) { investmentPlanProject.setInvestmentSubjectName(generaterSwapUtil.comSelectValues(investmentPlanProject.getInvestmentSubject())); } } //按照年份分组后,降序排序 TreeMap<String, List<TzglInvestmentPlanProjectModel>> investmentPlanProjectMapDescending = new TreeMap<>(Comparator.reverseOrder()); investmentPlanProjectMapDescending.putAll(investmentPlanProjectMap); return ActionResult.success(investmentPlanProjectMapDescending);优化此代码
可以考虑以下优化:
1. 将获取用户信息和部门信息的代码提取出来,避免在每个方法里都重复获取。
```
UserInfo userInfo = userProvider.get();
OrganizeEntity organize = organizeService.getById(userInfo.getDepartmentId());
```
2. 使用 Stream API 和 lambda 表达式来简化代码。
```
TreeMap<String, List<TzglInvestmentPlanProjectModel>> investmentPlanProjectMap = tzglInvestmentPlanService.selectProjectDetial(params,organize);
investmentPlanProjectMap.forEach((key, projectList) -> projectList.forEach(investmentPlanProject -> investmentPlanProject.setInvestmentSubjectName(generaterSwapUtil.comSelectValues(investmentPlanProject.getInvestmentSubject()))));
TreeMap<String, List<TzglInvestmentPlanProjectModel>> investmentPlanProjectMapDescending = new TreeMap<>(Comparator.reverseOrder());
investmentPlanProjectMapDescending.putAll(investmentPlanProjectMap);
return ActionResult.success(investmentPlanProjectMapDescending);
```
3. 不需要先将 `investmentPlanProjectMap` 存放到一个 TreeMap 中,再进行降序排序。可以直接使用 Stream API 进行分组和排序。
```
Map<String, List<TzglInvestmentPlanProjectModel>> investmentPlanProjectMap = tzglInvestmentPlanService.selectProjectDetial(params,organize);
investmentPlanProjectMap.forEach((key, projectList) -> projectList.forEach(investmentPlanProject -> investmentPlanProject.setInvestmentSubjectName(generaterSwapUtil.comSelectValues(investmentPlanProject.getInvestmentSubject()))));
Map<String, List<TzglInvestmentPlanProjectModel>> investmentPlanProjectMapDescending = investmentPlanProjectMap.entrySet().stream()
.sorted(Map.Entry.<String, List<TzglInvestmentPlanProjectModel>>comparingByKey().reversed())
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (oldValue, newValue) -> oldValue, TreeMap::new));
return ActionResult.success(investmentPlanProjectMapDescending);
```