这篇博客是对Java Map对value值实现排序
首先说一下如果Map对key进行从小到大默认排序是创建TreeMap对象。Map maps = new TreeMap<>();就行了。
那么如何实现按value排序呢?
这里使用的是java.util.Collections类实现排序,将Map转成List,再自定义比较器,代码如下:
package day01_jichu;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.TreeMap;
public class MapValSort {
public static void main(String[] args) {
Map maps = new TreeMap();
maps.put("zhangsan", 22);
maps.put("lisi", 24);
maps.put("wangwu", 18);
maps.put("zhaoliu", 22);
//自定义比较器
Comparator> valCmp = new Comparator>() {
@Override
public int compare(Entry o1, Entry o2) {
// TODO Auto-generated method stub
return o2.getValue()-o1.getValue(); // 降序排序,如果想升序就反过来
}
};
//将map转成List,map的一组key,value对应list一个存储空间
List> list = new ArrayList>(maps.entrySet()); //传入maps实体
Collections.sort(list,valCmp); // 注意此处Collections 是java.util包下面的,传入List和自定义的valCmp比较器
//输出map
for(int i=0;i
System.out.println(list.get(i).getKey() + " = " + list.get(i).getValue());
}
}
}
下面是输出结果