zoukankan      html  css  js  c++  java
  • Java对map进行排序并生成序号

    最近做的项目有这样一个需求:要求对map中的值进行排序并生成序号。如果值相等则序号不变;如果不相等序号为该数数值在所有元素中的索引。如下表所示:

    Key(String) Value(Float) Idx
    23 12.4 1
    10 3.2 2
    11 2.2 3
    9 2.2 3
    1 1.9 5
    6 0.5 6
    
    public static Integer getSort(Map<String, Float> hashMap, String string) {
    		// 转换
    		ArrayList<Entry<String, Float>> arrayList = new ArrayList<Map.Entry<String, Float>>(
    				hashMap.entrySet());
    		// 排序
    		Collections.sort(arrayList, new Comparator<Map.Entry<String, Float>>() {
    			public int compare(Map.Entry<String, Float> map1,
    					Map.Entry<String, Float> map2) {
    				return ((map2.getValue() - map1.getValue() == 0) ? 0 : (map2
    						.getValue()
    						- map1.getValue() > 0) ? 1 : -1);
    			}
    		});
    		Map<String, Integer> idxex = new HashMap<String, Integer>();
    		// 输出
    		int size = 1;
    		for (int i = 0; i < arrayList.size(); i++) {
    			Entry<String, Float> entry = arrayList.get(i);
    			if (i > 0) {
    				float curr = arrayList.get(i).getValue();
    				float last = arrayList.get(i - 1).getValue();
    				if (curr != last) {
    					size = i;
    					idxex.put(entry.getKey(), (i + 1));
    					size++;
    				} else {
    					idxex.put(entry.getKey(), size);
    				}
    			} else {
    				idxex.put(entry.getKey(), size);
    			}
    		}
    
    		for (Map.Entry<String, Integer> entry : idxex.entrySet()) {
    			String key = entry.getKey();
    			if (string.equals(key)) {
    				return entry.getValue();
    			}
    		}
    		return 0;
    	}
    
    
  • 相关阅读:
    四则运算2
    大二第二学期阅读计划
    第一周课堂练习
    《人月神话》读后感
    软件工程概论总结第十一章
    软件工程概论总结第十章
    软件工程概论总结第九章
    软件工程概论总结第八章
    软件工程概论总结第七章
    第五章、软件过程中的形式化方法
  • 原文地址:https://www.cnblogs.com/rever/p/7792818.html
Copyright © 2011-2022 走看看