在java中,定义一个Map<String, Integer>,由键值进行降序排序,最后由结果的键生成一个List<String>
时间: 2023-11-11 08:12:09 浏览: 93
可以使用Java 8的Stream API和Comparator来实现该功能,具体代码如下:
```java
import java.util.*;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
Map<String, Integer> map = new HashMap<>();
map.put("a", 3);
map.put("b", 1);
map.put("c", 2);
List<String> result = map.entrySet()
.stream()
.sorted(Collections.reverseOrder(Map.Entry.comparingByValue()))
.map(Map.Entry::getKey)
.collect(Collectors.toList());
System.out.println(result); // 输出 [a, c, b]
}
}
```
首先使用`entrySet()`方法将Map中的键值对转换为Set集合,再通过`stream()`方法将集合转换为流。然后调用`sorted()`方法,传入一个降序排列的比较器,即`Collections.reverseOrder(Map.Entry.comparingByValue())`,根据值进行降序排序。之后调用`map()`方法,将每个Entry对象转换为其键,最后使用`collect()`方法将结果转换为List集合。
阅读全文