HashMap根据value的大小对集合中的元素进行排序

       自己写的一个根据Map的值进行排序的工具类,键的值可以是各种引用类型.

 public static <E> LinkedHashMap<E,Integer> sortByMapValue(Map<E,Integer> originalMap){
    	List<Map<E,Integer>> sortMapList=new ArrayList<>();
    	for (Entry<E, Integer> entry : originalMap.entrySet()) {
    		E key = entry.getKey();
    		Integer value=entry.getValue();
    		Map<E,Integer> orderMap = new HashMap<>();
    		orderMap.put(key,value);
    		if(sortMapList.size()==0) {
    			sortMapList.add(orderMap);
    			continue;
    		}
    		for(int i=0;i<sortMapList.size();i++) {
    			Integer ordreValue=Integer.valueOf(String.valueOf((sortMapList.get(i).values().toArray())[0]));
    			if(value>ordreValue) {
    				sortMapList.add(i,orderMap);
    				break;
    			}
    			if(i==(sortMapList.size()-1)) {
    				sortMapList.add(i+1,orderMap);
    				break;
    			}
    		}
    		
    	}
    	LinkedHashMap<E,Integer> sortedMap=new LinkedHashMap<>();
    	for (Map<E, Integer> singleMap : sortMapList) {
			@SuppressWarnings("unchecked")
			E orderKey=(E) singleMap.keySet().toArray()[0];
    		sortedMap.put(orderKey,singleMap.get(orderKey));
    	}
    	return sortedMap;
    }

测试实例:

public static void main(String[] args) {
		Map<Integer,Integer> originalMap=new HashMap<>();
		
		originalMap.put(11,11);
		originalMap.put(22,22);
		originalMap.put(33,33);
		originalMap.put(44,44);
		originalMap.put(55,55);
		originalMap.put(66,66);
		
		//根据map值得大小排序
		LinkedHashMap<Integer, Integer> sortByMapValue = sortByMapValue(originalMap);
		System.out.println(sortByMapValue);
	}

输出:

{66=66, 55=55, 44=44, 33=33, 22=22, 11=11}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值