List<Map> data11 = new ArrayList()[{“20243”:0.019},{“20241”:“0.019”},{“20242”:0.019}]帮我用java代码根据"20243",“20241”,"20242"这些键进行排序
时间: 2024-11-12 14:38:20 浏览: 3
在Java中,由于`ArrayList`并不是直接支持Map的数组,你需要先将其转换为List<Map<String, Double>>。然后你可以创建一个新的List来存储Map,并使用Java 8的Stream API结合Comparator进行排序。这里是一个示例:
```java
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
List<Map<String, Double>> dataList11 = Arrays.asList(
Map.of("20243", 0.019),
Map.of("20241", "0.019"),
Map.of("20242", 0.019)
);
// 将ArrayList转为List<Map>
List<Map<String, Double>> listMaps = new ArrayList<>(dataList11);
// 创建一个新的列表并根据key进行排序
List<Map<String, Double>> sortedData = listMaps.stream()
.sorted(Comparator.comparingDouble(map -> map.get("20243")) // 使用第一个键进行比较
.thenComparing(map -> map.get("20241"), Comparator.naturalOrder()) // 如果第一个键相等,则使用第二个键
.thenComparing(map -> map.get("20242"), Comparator.naturalOrder()) // 最后如果前两个都相等,则使用第三个键
.collect(Collectors.toList());
阅读全文