Map进行排序 用Comparable

Posted 1306962984wei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Map进行排序 用Comparable相关的知识,希望对你有一定的参考价值。

比较的接口Comparable,提供了一个比较的方法,所有实现该接口的类,都动态的实现了该比较方法。实际上Java中除了比较一个接口外,还提供了一个接口,该接口也是具有比较的功能,但该接口注重的却是比较容器,然后对其排序,这就是Comparator

 

 

Map<String,Integer> map = new HashMap<String,Integer>();
map.put("c", 3);
map.put("d", 2);
map.put("e", 1);
map.put("b", 2);
// System.out.println(map.get("am"));


List li = new ArrayList();
// System.out.println(map.entrySet());

List<Map.Entry<String, Integer>> infoIds = new ArrayList<Map.Entry<String, Integer>>(map.entrySet());
// 排序
// for (int i = 0; i < infoIds.size(); i++) {
// System.out.println(infoIds.get(i));
// }
//

//Comparator
Collections.sort(infoIds, new Comparator<Map.Entry<String, Integer>>() {
public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {

return (o2.getValue() - o1.getValue());      //正数是升序,负数是降序    这里是根据map的值进行排序
// return (o2.getKey()).toString().compareTo(o1.getKey());
}
});
// 排序后
for (int i = 0; i < infoIds.size(); i++) {
String id = infoIds.get(i).toString();
//System.out.println(id);
String[] ss = id.split("=");
System.out.println(ss[0] + ":" + ss[1] + "分钟");
}

 

以上是关于Map进行排序 用Comparable的主要内容,如果未能解决你的问题,请参考以下文章

如何对 Map<LocalDate, Integer> 进行排序? [复制]

C++ STL中Map的按Key排序和按Value排序

如何禁止STL map 自动排序

STL map 按key值和按value值排序

c++map按value排序--将map的pair对保存到vector中,然后写比较仿函数+sort完成排序过程。

C++ STL中Map的按Key排序和按Value排序