HashTable 是否维护广告顺序?

2022-09-02 02:26:37

下面的代码以相同的插入顺序为我提供输出。我读了javadoc,他们甚至没有谈论插入顺序。有人可以帮助我获得正确的信息吗?

import java.util.*;

public class hash {

public static void main(String[] args) {

    String str[] = { "japan",
            "usa",
            "japan",
            "russia",
            "usa",
            "japan",
            "japan",
            "australia"};
    int len = 8;
    Hashtable ht = new Hashtable();
    int i = 0;
    while (i < len) {

        String c = str[i];
        System.out.println("c :" + c);
        Integer intg = (Integer) ht.get(c);

        if (intg == null)
            ht.put(c, new Integer(1));
        else
            ht.put(c, new Integer(intg.intValue() + 1));

        i++;
    }

    Enumeration k = ht.keys();

    while (k.hasMoreElements()) {
        String key = (String) k.nextElement();
        System.out.println(key + " > " + ht.get(key));
    }
}
}

答案 1

不,它没有。要保留广告订单,请改用 (javadoc)。java.util.LinkedHashMap

此外,现在优先于 ,因为具有不必要的并发开销。(请参阅 HashMap 和 Hashtable 之间的区别?HashMapHashtableHashtable


答案 2

它只知道“哈希”顺序。如果对字符串重新排序,您会发现它们仍然以哈希表中的相同顺序显示。