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
TreeMapSortBy
Value{
public static void main(String[] args) {
// 创建一个
实现Comparator接口的类
Value
Comparator 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.get
Value().compareTo(o2.get
Value());
}
});
// 遍历
排序后的List,输出
键 值对
for (Map.Entry<String, Integer> entry : list) {
System.out.println(entry.get
Key() + " : " + entry.get
Value());
}
}
}
//
实现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;
}
}
}
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.mushiming.com/mjsbk/11488.html