HashMap好像不能排序 HashMap好像不能排序 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 咋排?我要按照key或者value排序 不能排,能排的话,哈希算法也就没有意义了.就是要把这些值散列开才爽啊如果要排序, 请用TreeMap HashMap岂止不能排序!就算你把排好序的元素依次放进HashMap、过段时间其次序会随机变乱的。HashMap不能保证元素顺序、遇到虚拟机不定时的整理内存堆肯定会把其次序打乱、只能保证元素不会丢。 JDK上面写得很清楚,为什么你不看一下呢?This class makes no guarantees as to the order of the map。in particular, it does not guarantee that the order will remain constant over time.(jdk1.4.2/java.Util.HashMap)不保证影射顺序, 尤其不保证映射顺序不变。也就是说,你按照顺序放进去的,取出来也会乱 我不是这个意思hash本身就是散列的意思,是随机的顺序不过Perl也有hashperl的hash也是随机的顺序但是可以排序(sort keys %hash)就是对一个hash按照key排序 按”key”/”value”是可以排序的不能排序是指不能按照放进去的顺序取出来 不同场合应用不同的集合,你不要强求HashMap排序。 将key或者value取出来作为list,对list来排序就行了 TreeMap可以按key排序(put的时候就已经排序好了)LinkedHashMap可以保持插入顺序 LinkedHashMap 是 JDK1.4 才有的,使用时要注意 刚查了JDK的文档Treemap似乎效率低一些LinkedHashMap可以按照插入顺序排序我主要是想按照hash的key排序,并不是要求插入顺序 只是不太清楚这个加载因子是什么意思load factor 我主要是想按照hash的key排序,并不是要求插入顺序---------------自己写个map,实现comparator接口,定义按key的hashcode排序的compare方法最后存到collection里 对,实现Comparable接口的compareTo方法,就可以实现了。Collections.sort(java.util.List), Arrays.sort(Object[]), SortedSet, SortedMap, TreeSet, TreeMap上面的这些都可以用。 我主要是想按照hash的key排序,并不是要求插入顺序---------------自己写个map,实现comparator接口,定义按key的hashcode排序的compare方法最后存到collection里----------------这里讲得有问题要么不要用hashmap了,hashmap注定排不了序可以自己写个类,存key-value的pair,然后实现compare方法,按key的hashcode比较 HashMap 本身是散列集合,散列是它实现的主要目标,散列与排序是对立的,最起码是不兼容的。因此你选择HashMap的同时,就选择了散列,而不是有序序列。如果由于某些困难实在要求用HashMap,而又要排序。我认为可以这样实现:Set yourHashMap.keySet() 产生一个关键字散列表,将它们取出来,进行某种排序,然后在根据关键字,到散列表中取值。load factor 的意思是:它决定何时对散列表进行散列。默认值是0.75,当散列表有75%的位置放满时,散列表自动使用两倍的散列表元尽心再散列。 HashMap ,HashTable两者的区别是什么?谁能解释一下呀? hashmap本身是不可以排序,只能通过其他手段进行排序. HashMap ,HashTable两者的区别是什么?谁能解释一下呀?-------HahsTable是同步的,而HashMap不是,所以在多线程中应该使用HashTable Hashtable是一个历史遗留问题,多线程下也不必用它使用HashMap的同步视图即可,Collections.synchronizedMap(new HashMap()); 楼上正解,同步也应该使用Collections提供的解决方案. 如果你想简单的按key和value排序用TreeMap排序就行了。Map map=new TreeMap();Iterator iterator=map.keySet().iterator();while(iterator.hasNext()) {Object key=iterator.next();Object value=map.get(key);}如果你想按输入时的顺序取出数据请你用apache的collections包中的SequencedHashMap来做。具体操作和上面一样用于给一个select的option设置value和displayString。(在你不想改变map中存入顺序的情况下。) hashmap本来就是散列表,要排序就不要用这个咯。 如何在jComboBox中添加日历控件 新手提问,简单java编程问题。 关于等差数列和的问题 corejava 中的一个sketch程序??高手请进 用Batch执行多条插入的SQL语句的异常问题 乱码问题:html转义字符的转换,在线! 郁闷问题,java高手请进!!! 新手提问!!大侠帮忙呀!! 请问java 中有没有把asscii码转化为字符的内部函数! 关于response的一些问题 java高级群2899565,请大家踊跃加入。 新手,关于 Serializable 的问题, 谢谢。
如果要排序, 请用TreeMap
HashMap不能保证元素顺序、遇到虚拟机不定时的整理内存堆肯定会把其次序打乱、只能保证元素不会丢。
不保证影射顺序, 尤其不保证映射顺序不变。也就是说,你按照顺序放进去的,取出来也会乱
hash本身就是散列的意思,是随机的顺序
不过Perl也有hash
perl的hash也是随机的顺序
但是可以排序
(sort keys %hash)就是对一个hash按照key排序
不能排序是指不能按照放进去的顺序取出来
LinkedHashMap可以保持插入顺序
Treemap似乎效率低一些
LinkedHashMap可以按照插入顺序排序
我主要是想按照hash的key排序,并不是要求插入顺序
load factor
---------------
自己写个map,实现comparator接口,定义按key的hashcode排序的compare方法
最后存到collection里
---------------
自己写个map,实现comparator接口,定义按key的hashcode排序的compare方法
最后存到collection里----------------
这里讲得有问题
要么不要用hashmap了,hashmap注定排不了序
可以自己写个类,存key-value的pair,然后实现compare方法,按key的hashcode比较
load factor 的意思是:它决定何时对散列表进行散列。默认值是0.75,当散列表有75%的位置放满时,散列表自动使用两倍的散列表元尽心再散列。
-------
HahsTable是同步的,而HashMap不是,所以在多线程中应该使用HashTable
Map map=new TreeMap();
Iterator iterator=map.keySet().iterator();while(iterator.hasNext()) {Object key=iterator.next();
Object value=map.get(key);
}如果你想按输入时的顺序取出数据请你用apache的collections包中的SequencedHashMap来做。具体操作和上面一样用于给一个select的option设置value和displayString。(在你不想改变map中存入顺序的情况下。)