我有一個Tree Map,其中我已經按照升序排序元素,如0,1,2,3等。這些元素按它們的值排序,即0,1,2等values.I使用比較排序他們..我想要保留這個順序,除了我想在地圖的末尾放置0值的元素。怎麼做?把元素放在TreeMap的末尾
1
A
回答
5
正如你已經說過,你TreeMap的排序,所以這將是完全懵了,讓你的一個元素的「結束」追加,甚至儘管TreeMaps不能以這種方式工作。
你可以做的是配置你的比較器的方式,它決定「0」是最大的元素,所以他會將所有「0」排序到最後。 請注意,最後「0」的順序是隨機的,具體取決於排序算法。
1
您可以修改您的比較和治療0作爲國內最大的數字
1
剛剛意識到,您要在地圖上排序值而不是鍵。比較器沒有得到值使它更復雜一些。所述新方法使用第二(未分類)地圖,僅僅收集所有的值,並且可以通過比較被用於查找值的密鑰:
private static Map<String, Integer> helper = new HashMap<String, Integer>();
private static Comparator<String> myComparator
= new Comparator<String>() {
public int compare(String s1, String s2) {
Integer i1 = helper.get(s1);
Integer i2 = helper.get(s2);
if (i1 == 0) return 1; // i1 > i2
if (i2 == 0) return -1; // i1 < i2
return i1.compareTo(i2);
}
};
public static void main (String[] args) throws java.lang.Exception {
helper.put("minus one", -1);
helper.put("zero", 0);
helper.put("one", 1);
helper.put("very much", Integer.MAX_VALUE);
helper.put("nothing", 0);
helper.put("null", 0);
Map<String, Integer> map = new TreeMap<String, Integer>(myComparator);
map.putAll(helper);
for(Map.Entry<String, Integer> entry:map.entrySet()) {
System.out.printf("%s = %s%n", entry.getKey(), entry.getValue());
}
}
的輸出是:
minus one = -1
one = 1
very much = 2147483647
nothing = 0
zero = 0
null = 0
相關問題
- 1. 固定元素在div末尾
- 2. WordPress的|把用戶名放在鏈接的末尾
- 3. Webstorm/Intellij把「;」總是在行的末尾
- 4. 如何把按鈕放在溢出隱藏div的末尾?
- 5. 把python doctest放在代碼文件的末尾?
- 6. C元素超出數組的末尾
- 7. 將元素添加到NSMutableArray的末尾
- 8. 從頁面頂部的文檔末尾放置一個元素
- 9. GData將\添加到元素末尾
- 10. 如何在元素的末尾淡出div的內容?
- 11. 在python的列表的末尾插入一個元素?
- 12. 如何在Array的每個元素的末尾添加逗號
- 13. 如何使用jquery在添加元素的末尾添加元素?
- 14. WordPress的把%E2%80%8E放在我的網址末尾,怎麼樣?
- 15. 把滾動條放在元素內
- 16. 在單個鏈接列表的末尾插入元素
- 17. 在列表的末尾插入一個元素C
- 18. C++在矢量的末尾插入元素
- 19. 在矢量的末尾添加一個元素
- 20. 爲什麼在ListView的末尾添加元素?
- 21. C#在末尾增加一個元素的數組
- 22. 如何在OpenCL中將元素添加到數組的末尾?
- 23. 如何在XSLT的記錄末尾添加附加元素
- 24. 給元素ID號碼,然後在末尾插入一個
- 25. 使用jQuery在元素末尾添加「more」html?
- 26. 如果元素不完全可見,則滾動到元素的末尾
- 27. 修剪列表的最後一個元素的末尾
- 28. 將一個元素移到帶有flexbox的列表的末尾
- 29. 將$ b的元素添加到數組$ a的末尾php
- 30. 在Java TreeMap中查找元素位置
它聽起來像你試圖做的事情應該做得更好。例如,'0'只能出現一次,所以它不能出現在開始和結束處。也許你可以澄清你需要做什麼,我們可以想出一個更簡單的解決方案。 – 2012-03-13 08:20:02
我正在使用一個比較器來排序,但也有0個。但是我想要0的結尾。那就是我想要的。@ Peter Lawrey – Azfar 2012-03-13 09:40:48
爲什麼不使用'Integer.MAX_VALUE'來代替0? – 2012-03-13 09:42:10