树状图排序

3

我有这段代码:

private final static TreeMap<String, UserNotification> USER_NOTIFICATION_MAP = new TreeMap<String, UserNotification>();

//Filling the map using services

String idString = "1";
Iterator it = USER_NOTIFICATION_MAP.entrySet().iterator();
while (it.hasNext()) 
{
    Map.Entry pairs = (Map.Entry)it.next();
    idString = pairs.getKey().toString();   
    System.out.println(idString);
}   

对于以下键值对的地图: 2 - 用户通知, 3 - 用户通知, 4 - 用户通知, 5 - 用户通知, 6 - 用户通知, 7 - 用户通知, 8 - 用户通知, 9 - 用户通知, 10 - 用户通知
代码的输出是: 10 2 3 4 5 6 7 8 9
考虑到TreeMap按其键对所有数据进行排序,这怎么可能呢?我想键值为10的应该在列表末尾。
3个回答

6
TreeMap 是基于它的键按字典序(按字母顺序)排序的,因此任何以1开头的内容都会排在以2开头的内容之前。
如果您想按数字对您的映射进行排序,您应该使用 TreeMap<Integer, UserNotification>

3
您正在使用字符串比较而不是整数。因此,“10”在“2”之前。

哦,看起来安德鲁在我之前回答了几秒钟 :) - kulatamicuda
这很快,是的! :) - omegasbk

3

这是因为你在键集中使用了 String

因此,String 会按字典顺序排序,因此 102 之前。

使用 Integer(或 Long)可以达到预期的顺序。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接