我有一个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