首页 > 编程语言 > 详细

对map创建出来的值顺序排序问题

时间:2015-02-05 10:59:16      阅读:122      评论:0      收藏:0      [点我收藏+]

TreeMap
在用Ajax动态创建checkBox时,而把值放在了HashMap中,hashMap是无序的,因此你动态创建出来的顺序是乱的,比如你想要的顺序是1、2、3、4但出来的结果可能是 3、2、1、4等,刚开始想在sql中进行排序,认为这样就可以进行排序,但结果还是没有进行排序,最后上网查资料发现要对Map进行排序,可以使用treeMap,
    private Map<String, String> sortedMap(Map<String, String> classMap2) {
 TreeMap<String, String> result = new TreeMap<String, String>();
    Object[] unsort_key = classMap2.keySet().toArray();
    Arrays.sort(unsort_key);
    for (int i = 0; i < unsort_key.length; i++) {
     result.put(unsort_key[i].toString(), classMap2.get(unsort_key[i]));
    }
    return result.tailMap(result.firstKey());
   } 
这样你创建出来的map就是有序的了,在这里是默认对key进行排序的。
在这里必须使用TreeMap,因为HashMap是通过HashCode对其内容进行快速查找,而TreeMap中所有的元素则保持这某种固定的顺序。
但经常使用的是HashMap,它根据键的HashCode 值存储数据,根据键可以直接获取它的值,具有很快的访问速度。HashMap最多只允许一条记录的键为Null;允许多条记录的值为 Null;HashMap不支持线程的同步,即任一时刻可以有多个线程同时写HashMap;可能会导致数据的不一致。如果需要同步,可以用 Collections的synchronizedMap方法使HashMap具有同步的能力。 

 

对map创建出来的值顺序排序问题

原文:http://www.cnblogs.com/wjwen/p/4274056.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!