TreeMap<String, List<TzglInvestmentPlanProjectModel>> investmentPlanProjectMap = list.stream() .collect(Collectors.groupingBy(TzglInvestmentPlanProjectModel::getPlanYear, TreeMap::new, Collectors.toList()));改成降序排序
时间: 2024-02-03 09:02:01 浏览: 22
可以将 TreeMap 构造函数中的 Comparator 参数改为一个降序比较器,如下所示:
```
Comparator<String> descendingOrder = Comparator.reverseOrder();
TreeMap<String, List<TzglInvestmentPlanProjectModel>> investmentPlanProjectMap =
list.stream()
.collect(Collectors.groupingBy(
TzglInvestmentPlanProjectModel::getPlanYear,
() -> new TreeMap<>(descendingOrder),
Collectors.toList()
));
```
这里使用了 `Comparator.reverseOrder()` 方法获取一个默认降序比较器。构造函数中的第二个参数是一个 Supplier 对象,用于创建 TreeMap 对象,这里使用了一个 lambda 表达式来返回一个 TreeMap 对象,并且指定了比较器为降序比较器。
相关问题
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);
```
Map<String, List<TBmwyResolvedevicedata>> map = dataList.stream().collect(Collectors.groupingBy(TBmwyResolvedevicedata::getEndTime)); 将这个map集合按key字符串值升序
您可以使用Java 8的Stream API和TreeMap类来对Map进行排序,以下是一个示例代码:
```
Map<String, List<TBmwyResolvedevicedata>> groupedMap = dataList.stream()
.collect(Collectors.groupingBy(TBmwyResolvedevicedata::getEndTime)); //按EndTime分组
Map<String, List<TBmwyResolvedevicedata>> sortedMap = new TreeMap<>(groupedMap); //根据key字符串值升序排序
```
在上面的示例代码中,我们首先使用groupingBy()方法将dataList按EndTime分组,并将结果存储在一个Map中。然后,我们使用TreeMap来对Map进行排序,TreeMap会根据key的自然顺序(字符串值)来排序。最后,我们将排序后的Map存储在sortedMap中。