我一直在尋找這個答案,並找不到它。所以我想我可能會與大家分享。我想排序值,而不是鍵。如何在Java中對HashMap的值進行排序並保留重複條目?
2
A
回答
2
而答案是,我找到了here。
public LinkedHashMap sortHashMapByValuesD(HashMap passedMap) {
List mapKeys = new ArrayList(passedMap.keySet());
List mapValues = new ArrayList(passedMap.values());
Collections.sort(mapValues);
Collections.sort(mapKeys);
LinkedHashMap sortedMap =
new LinkedHashMap();
Iterator valueIt = mapValues.iterator();
while (valueIt.hasNext()) {
Object val = valueIt.next();
Iterator keyIt = mapKeys.iterator();
while (keyIt.hasNext()) {
Object key = keyIt.next();
String comp1 = passedMap.get(key).toString();
String comp2 = val.toString();
if (comp1.equals(comp2)){
passedMap.remove(key);
mapKeys.remove(key);
sortedMap.put((String)key, (Double)val);
break;
}
}
}
return sortedMap;
}
+0
這對我有效..感謝分享:) – Sunny
+0
很高興知道它幫助了某人,@孫尼。 –
3
This是一種可以使用的不同方法。比較器中的compare()方法不會返回0。這將保持重複的條目。
1
public LinkedHashMap sortHashMapByValuesD(HashMap passedMap) {
List mapKeys = new ArrayList(passedMap.keySet());
List mapValues = new ArrayList(passedMap.values());
Collections.sort(mapValues);
Collections.sort(mapKeys);
LinkedHashMap sortedMap =
new LinkedHashMap();
Iterator valueIt = mapValues.iterator();
while (valueIt.hasNext()) {
Object val = valueIt.next();
Iterator keyIt = mapKeys.iterator();
while (keyIt.hasNext()) {
Object key = keyIt.next();
String comp1 = passedMap.get(key).toString();
String comp2 = val.toString();
if (comp1.equals(comp2)){
passedMap.remove(key);
mapKeys.remove(key);
sortedMap.put((String)key, (Double)val);
break;
}
}
}
return sortedMap;
}
相關問題
- 1. Java中的PriorityQueue如何對重複條目進行排序?
- 2. 排序重複值的數組,並在值排序後保留索引順序
- 3. 如何在Java中對HashMap進行排序?
- 4. 如何在Java中對重複數字進行排序?
- 5. 對HashMap進行排序迭代Java
- 6. 消除數組中的重複條目並對結果進行排序
- 7. 如何使用treeset對hashmap中的值進行排序?
- 8. 如何對HashMap中的值(ArrayList <String>)進行排序
- 9. 如何對目錄的HashMap進行排序?
- 10. 在MySQL中選擇最重複的值並進行排序
- 11. 如何做並排條形圖ggplot並保留原始排序
- 12. Java HashMap重複存儲桶條目
- 13. 在單獨的行中計數重複值並對它們進行排序
- 14. 如何根據價值對重複條目進行整理?
- 15. 如何在保留初始索引的同時對這些值進行排序?
- 16. 如何根據值對hashmap進行排序?
- 17. Unix:如何對dat文件進行排序並保留原始行號
- 18. 如何在Android中對HashMap(ArrayList內)進行排序?
- 19. 如何在Android中對陣列列表hashmap進行排序?
- 20. 對多維數組進行排序並保留同級
- 21. java如何結合兩個hashmap沒有重複的條目
- 22. 如何在java中對項目進行排序combobox
- 23. 如何對Java中ArrayList中的某些項目進行排序?
- 24. 對YUI Datatable進行排序,保留空值頂部
- 25. 如何使用ArrayAdapter對Android中添加的HashMap進行排序
- 26. 如何查找重複值並只保留那些行?
- 27. 對其屬性的HashMap對象進行排序而不是值
- 28. 使用Java,如何在不重複比較的情況下將HashMap中的每個條目與同一HashMap中的每個條目進行比較?
- 29. 如何在排序後得到所有條目的計數,並保留bash中的唯一條目?
- 30. 根據Value對Key進行排序HashMap?
只是出於好奇,如果你想要一個有序映射,爲什麼不使用TreeMap的? – KitsuneYMG
可能是因爲TreeMap對鍵進行排序,而OP想要對值進行排序。 –