如何将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);


很简单吧。

 


 

posted @ 2013-08-09 22:46  坚固66  阅读(2412)  评论(0编辑  收藏  举报