如何将HashMap,按照value值排序

这里要用到一个Comparator的接口,里面只有一个方法,compare(),我们实现这个接口就好,很简单

private class ValueComparator implements Comparator<Map.Entry<String, Integer>>  
	    {  
	        public int compare(Map.Entry<String, Integer> mp1, Map.Entry<String, Integer> mp2)   
	        {  
	            return mp2.getValue() - mp1.getValue();  
	        }  
	    }  


这里为啥用mp2-mp1呢,因为我想要的排序结果是从大到小,默认的是从小到大排序。这样调换一下位置就不要再写一个循环,倒叙输出了。

使用的时候也很简单,调用Collections工具类的sort方法时,传入我们自己写的这个实现类的对象,作为参数就可以了。先根据实际需求,创建一个List。

Map<String,Integer> map=new HashMap<>();
		List<Map.Entry<String,Integer>> sort=new ArrayList<>();

然后直接就可以排序啦。

sort.addAll(map.entrySet());
		ValueComparator vc=new ValueComparator();
		Collections.sort(sort,vc);


很简单吧。


原文地址:https://www.cnblogs.com/jiangu66/p/3249123.html