我想排序基於其值是一個HashMap,爲什麼不即使使用collections.reverse()排序後,在java中的ArrayList
我這樣做是分離HashMap中的鍵集和valueset方式成兩個ArrayList中 ,然後單獨排序列表,然後經過一番比較操作 但出於某種原因collection.reverse(LIST)增加值在新haspMap,將不在該列表按降序排列
下面是整理我的代碼:
public LinkedHashMap sortHashMapByValuesD(HashMap passedMap)
{
ArrayList <Integer>mapKeys = new ArrayList<Integer>(passedMap.keySet());
ArrayList <Double>mapValues= new ArrayList<Double>(passedMap.values());
Collections.reverse(mapValues);
Collections.reverse(mapKeys); //>>**Here the list won't sort for some reason**
LinkedHashMap<Integer, Double> sortedMap = new LinkedHashMap<Integer, Double>();
Iterator valueIt = mapValues.iterator();
while (valueIt.hasNext()) {
Object val = valueIt.next();
//System.out.println(val);
Iterator keyIt = mapKeys.iterator();
while (keyIt.hasNext()) {
Object key = keyIt.next();
Double comp1 =(Double)passedMap.get(key);
Double comp2 = (Double)val;
if (comp1==comp2){
passedMap.remove(key);
mapKeys.remove(key);
sortedMap.put((Integer)key,(Double)val);
break;
}
}
}
return sortedMap;
}
在此先感謝
collection.revers用於反轉,而不是排序,你也整理HashMap中的概念犯規聲音對我好:( – stinepike
以及我想拿出一些關於地圖的排序, 所以基本上我需要做排序,然後尊敬按降序排序集合? – Snedden27
所有你需要做的是'Collections.sort(mapValues)',然後'Collections.reverse(mapValues)',我想。你使用,讓你知道他們做了什麼方法 – njzk2