我有一個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. Htaccess當把'/'放在網址的末尾
- 2. 把js放在頁面的末尾
- 3. CSS-Place元素在div末尾
- 4. 把方法放在TreeMap的實現中
- 5. WordPress的|把用戶名放在鏈接的末尾
- 6. Webstorm/Intellij把「;」總是在行的末尾
- 7. 把python doctest放在代碼文件的末尾?
- 8. 如何把按鈕放在溢出隱藏div的末尾?
- 9. check_nrpe把$放在校驗字符串的末尾
- 10. 把光標放在文本輸入值的末尾
- 11. 什麼時候把「?>」放在php文件的末尾?
- 12. RegEx我需要把數字放在字符串的末尾?
- 13. C元素超出數組的末尾
- 14. 將元素添加到NSMutableArray的末尾
- 15. 從頁面頂部的文檔末尾放置一個元素
- 16. GData將\添加到元素末尾
- 17. 將光標放置在JavaScript中的iframe正文元素中的文本末尾
- 18. XML到XLS元素末尾複製當前元素
- 19. XSLT - 將DOM放在DOM的末尾
- 20. 在python的列表的末尾插入一個元素?
- 21. 如何在元素的末尾淡出div的內容?
- 22. 如何在Array的每個元素的末尾添加逗號
- 23. 如何使用jquery在添加元素的末尾添加元素?
- 24. WordPress的把%E2%80%8E放在我的網址末尾,怎麼樣?
- 25. 把重點放在magicsuggests輸入元素
- 26. 把元素放在鏈表C++
- 27. 把滾動條放在元素內
- 28. 在單個鏈接列表的末尾插入元素
- 29. 在矢量的末尾添加一個元素
- 30. 如何在XSLT的記錄末尾添加附加元素
它聽起來像你試圖做的事情應該做得更好。例如,'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