java中treemap根据value排序
时间: 2023-08-08 13:11:10 浏览: 187
Java Map 按key排序和按Value排序的实现方法
Java TreeMap可以按照value排序,可以通过实现Comparator接口来实现。具体步骤如下:
1. 创建一个实现Comparator接口的类,重写compare方法,比较两个value的大小。
2. 创建一个TreeMap对象,并将实现了Comparator接口的类作为参数传入。
3. 将需要排序的键值对添加到TreeMap中。
4. 使用entrySet()方法获取TreeMap中的所有键值对,并将其转换为List。
5. 使用Collections.sort()方法对List进行排序。
6. 遍历排序后的List,输出键值对。
示例代码如下:
```
import java.util.*;
public class TreeMapSortByValue {
public static void main(String[] args) {
// 创建一个实现Comparator接口的类
ValueComparator vc = new ValueComparator();
// 创建一个TreeMap对象,并将实现了Comparator接口的类作为参数传入
TreeMap<String, Integer> map = new TreeMap<>(vc);
// 将需要排序的键值对添加到TreeMap中
map.put("apple", 10);
map.put("banana", 5);
map.put("orange", 8);
// 使用entrySet()方法获取TreeMap中的所有键值对,并将其转换为List
List<Map.Entry<String, Integer>> list = new ArrayList<>(map.entrySet());
// 使用Collections.sort()方法对List进行排序
Collections.sort(list, new Comparator<Map.Entry<String, Integer>>() {
@Override
public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {
return o1.getValue().compareTo(o2.getValue());
}
});
// 遍历排序后的List,输出键值对
for (Map.Entry<String, Integer> entry : list) {
System.out.println(entry.getKey() + " : " + entry.getValue());
}
}
}
// 实现Comparator接口的类
class ValueComparator implements Comparator<String> {
Map<String, Integer> map = new HashMap<>();
public ValueComparator() {}
public ValueComparator(Map<String, Integer> map) {
this.map.putAll(map);
}
@Override
public int compare(String s1, String s2) {
if (map.get(s1) >= map.get(s2)) {
return 1;
} else {
return -1;
}
}
}
```
阅读全文