对List中的HashMap进行排序

public class SortListHashMapByValue implements  
        Comparator<HashMap<? extends Object, ? extends Comparable>> {  
    private boolean flag;  
    public SortListHashMapByValue(boolean flag) {  
        this.flag = flag;  
    }  
    public SortListHashMapByValue() {  
        this(true);  
    }  
    public int compare(HashMap<? extends Object, ? extends Comparable> o1,  
            HashMap<? extends Object, ? extends Comparable> o2) {  
        Comparable c1 = o1.entrySet().iterator().next().getValue();  
        Comparable c2 = o2.entrySet().iterator().next().getValue();  
        if (flag) {  
            return c1.compareTo(c2);  
        } else {  
            return c2.compareTo(c1);  
        }  
    }  
  
    public static void main(String[] args) {  
  
        List<HashMap<String, Float>> list = new ArrayList<>();  
        HashMap<String, Float> map = new HashMap<>();  
        map.put("1", 123.0f);  
        HashMap<String, Float> map1 = new HashMap<>();  
        map1.put("1", 12.0f);  
        HashMap<String, Float> map2 = new HashMap<>();  
        map2.put("1", 1112.0f);  
        list.add(map);  
        list.add(map1);  
        list.add(map2);  
        Collections.sort(list, new SortListHashMapByValue(false));  
        List<HashMap<String, Float>> list1 = list;  
  
    }  
}  


上面的方法只适合 实现了 Comparable的类,例如Double,Integer,Float,String等类 


List<HashMap<String, Double>> recordMap = new ArrayList<HashMap<String,Double>>();

for(int i=0,len = 10;i<len;i++){
		
	HashMap<String, Double> itemMap =new HashMap<String, Double>();
	Random random =new Random();
	Double totalScore = random.nextDouble();
	itemMap.put("totalScore", totalScore);
			
	recordMap.add(itemMap);
}
		
Collections.sort(recordMap, new RankComparator());


public class RankComparator implements Comparator<Map<String, Object>> {

	public int compare(Map<String, Object> o1, Map<String, Object> o2) {
		
		Double score1 =  (Double) o1.get("totalScore");
	    Double score2 =  (Double) o2.get("totalScore");
	    return score2.compareTo(score1); 
	    
	}

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值