开发中会遇到对Map元素排序的问题,下面介绍下如何根据key、value排序.
key排序
- 使用TreeMap的Comparator比较 TreeMap默认是升序的,如果需要自定义排序规则,可以使用Comparator:
Map<String, Integer> map = new TreeMap<String, Integer>(new Comparator<String>() {
// 按照key排序
@Override
public int compare(String o1, String o2) {
// 按照key降序排列
return Integer.valueOf(o2).compareTo(Integer.valueOf(o1));
}
}) {
{
put("1", 9);
put("3", 6);
put("5", 2);
}
};
for (Map.Entry c : map.entrySet()) {
System.out.println(c.getKey() + "=" + c.getValue());
}java.util.Collections的sort方法
Map<String, Integer> map = new TreeMap<String, Integer>() {
{
put("1", 9);
put("3", 6);
put("5", 2);
}
};
List<Map.Entry<String, Integer>> entryList = new ArrayList<Map.Entry<String, Integer>>(map.entrySet());
Collections.sort(entryList, new Comparator<Map.Entry<String, Integer>>() {
@Override
public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {
// 根据key降序排列
return Integer.valueOf(o2.getKey()).compareTo(Integer.valueOf(o1.getKey()));
}
});
for (Map.Entry c : entryList) {
System.out.println(c.getKey() + "=" + c.getValue());
}value排序
java.util.Collections的sort方法 由上可知,对value排序也很容易实现:
Map<String, Integer> map = new TreeMap<String, Integer>() {
{
put("1", 9);
put("3", 6);
put("5", 2);
}
};
List<Map.Entry<String, Integer>> entryList = new ArrayList<Map.Entry<String, Integer>>(map.entrySet());
Collections.sort(entryList, new Comparator<Map.Entry<String, Integer>>() {
@Override
public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {
// 根据value降序排列
return o2.getValue().compareTo(o1.getValue());
}
});
for (Map.Entry c : entryList) {
System.out.println(c.getKey() + "=" + c.getValue());
} 继续阅读与本文标签相同的文章
上一篇 :
golang实战-1:搭建vim-go开发环境
下一篇 :
MySQL中的MVCC概念介绍(1)
-
Myeclipse报错-Java compiler level does not match 完美解决方法
2026-05-26栏目: 教程
-
java lambda 深入浅出
2026-05-26栏目: 教程
-
如何高效检查一个数组中是否包含某个值?
2026-05-26栏目: 教程
-
导入execl到数据库mysql
2026-05-26栏目: 教程
-
公司框架遇到的问题
2026-05-26栏目: 教程
