hashtable.put( "One", new Integer(1) );
hashtable.put( "Two", new Integer(2) );hashtable.put( "Three", new Integer(3) );
hashtable.put("four", new Integer(4));
输出时的顺序为什么是key=One,four,Three,Two??
hashtable遍历的输出顺序到底是怎么样的??????

解决方案 »

  1.   

    如果希望遍历输出的结果与插入顺序相同,
    可以使用LinkedHashMap。例子代码:
    public class Test {

    public static void main(String[] args) {

    Map<String,Integer> hashtable = new LinkedHashMap<String,Integer>();

    hashtable.put( "One", new Integer(1) ); 
    hashtable.put( "Two", new Integer(2) ); 

    hashtable.put( "Three", new Integer(3) ); 
    hashtable.put("four", new Integer(4)); 


    System.out.println(hashtable); }
    }运行结果:{One=1, Two=2, Three=3, four=4}
      

  2.   

    hashtable里面保存的东西是无序的哈,你要用的话就用LinkedHashMap才是有序的。
    ls这位兄弟已经有例子了。
      

  3.   

    lz要看看什么是有序集合,什么是无序集合,用vector就行了
      

  4.   

    直接 System.out.println(hashtable)输出就行
      

  5.   

    此类实现一个哈希表,该哈希表将键映射到相应的值。任何非 null 对象都可以用作键或值。
    自 Java 2 平台 v1.2 以来,此类已经改进为可以实现 Map,因此它变成了 Java Collections Framework 的一部分。与新集合的实现不同,Hashtable 是同步的。
    这些在API中都有描述的,因为它实现的是哈希表,所以是无序的,其实所说的无序也不是绝对的无序,它不过是按照自己本身的规则进行排序。
    Hashtable 的实例有两个参数影响其性能:初始容量 和加载因子。容量 是哈希表中桶 的数量,初始容量 就是哈希表创建时的容量。注意,哈希表的状态为 open:在发生“哈希冲突”的情况下,单个桶会存储多个条目,这些条目必须按顺序搜索。加载因子 是对哈希表在其容量自动增加之前可以达到多满的一个尺度。初始容量和加载因子这两个参数只是对该实现的提示。关于何时以及是否调用 rehash 方法的具体细节则依赖于该实现。
      

  6.   

    LZ到网上查一查数据结构HASH就知道怎么回事了,其实很简单,HASH在内存中分配是不连续的,去的时候按照HASHCODE来取,所以取出来的时候是无序的