在java中用hashtable put进来的key值后
取出来的后跟放进来的顺序不一样,
有没有方法可以解决?
如:
Hashtable ht = new Hashtable();
  ht.put("awrewe", "3");
  ht.put("d23", "2");
  ht.put("c113", "1");
  Enumeration evn = ht.keys();
  while(evn.hasMoreElements())
  System.out.println(evn.nextElement());
打印出来是:
d23
c113
awrewe
我要想得到原来的顺序:
awrewe
d23
c113

解决方案 »

  1.   

    hashtable是无序的,你如果想要得到原来的顺序,就不要使用hashtable,可以使用其它的比如说:list
      

  2.   

    hashtable是按hash值插入的,取出的顺序与插入的顺序不一样, LinkedHashMap是按insert-order取出的.
      

  3.   

    hashtable没有排序功能吧,用SortedMap吧.
      

  4.   

    hashtable是按hash值插入的,取出的顺序与插入的顺序不一样, LinkedHashMap是按insert-order取的.
      

  5.   

    hashtable hashset  都是无序的
    用list
      

  6.   

           看下数据算法吧。
           简单的说比方说一个容量为100的数组。然后你的一个key值是cat,然后会通过一个hash函数,把cat转换成一个下标。比方说10,然后把这个值传存入这个数组第10个位置上。这就是hashmap。所以不可能出现存取顺序一致的hashmap的。
      

  7.   


     public static void main(String[] args){
         LinkedHashMap<String, String> ht = new LinkedHashMap<String, String>(); 
           ht.put("awrewe", "3"); 
           ht.put("d23", "2"); 
           ht.put("c113", "1"); 
           Set s = ht.keySet(); 
           for(Object o: s) {
           String str = (String)o;
           System.out.println(str);
           }
        }  
      

  8.   


    package mypack;
    import java.util.*;public class Test {
           
        public static void main(String[] args){
         LinkedHashMap<String, String> ht = new LinkedHashMap<String, String>(); 
           ht.put("awrewe", "3"); 
           ht.put("d23", "2"); 
           ht.put("c113", "1"); 
           Set s = ht.keySet(); 
           for(Object o: s) {
           String str = (String)o;
           System.out.println(str);
           }
        }  
    }
    /*结果:
    awrewe
    d23
    c113*/
      

  9.   

    hashtable已经不推荐使用了,现在大多使用的是hashmap,sortmap,其中sortmap是按照红黑树数据结构排序的