对Map<String, BigDecimal>按值从大到小进行排序
时间: 2023-11-18 11:47:42 浏览: 37
要按值从大到小对Map<String, BigDecimal>进行排序,可以使用Java中的Stream API和Comparator来实现。以下是一个示例代码:
```java
import java.util.*;
import java.util.stream.*;
public class Main {
public static void main(String[] args) {
Map<String, BigDecimal> map = new HashMap<>();
map.put("A", new BigDecimal("10.5"));
map.put("B", new BigDecimal("5.2"));
map.put("C", new BigDecimal("7.8"));
// 使用Stream API对Map按值从大到小进行排序
List<Map.Entry<String, BigDecimal>> sortedList = map.entrySet()
.stream()
.sorted(Map.Entry.comparingByValue(Comparator.reverseOrder()))
.collect(Collectors.toList());
// 打印排序后的结果
for (Map.Entry<String, BigDecimal> entry : sortedList) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}
}
}
```
在这个例子中,我们创建了一个包含String作为键和BigDecimal作为值的Map。然后,我们使用Stream API对Map的entrySet进行流操作,并使用`comparingByValue(Comparator.reverseOrder())`方法按值从大到小进行排序。最后,我们使用`collect(Collectors.toList())`将排序后的结果收集到List中,并打印出来。
输出结果将会是:
```
A: 10.5
C: 7.8
B: 5.2
```
这样,你就可以按值从大到小对Map进行排序了。