以下代码以相同的插入顺序为我提供输出。我读了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));
}
}
}
答案 0 :(得分:40)
不,它没有。要保留广告订单,请使用java.util.LinkedHashMap
(javadoc)。
此外,HashMap
现在优先于Hashtable
,因为Hashtable
具有不必要的并发开销。 (见Differences between HashMap and Hashtable?。)
答案 1 :(得分:9)
答案 2 :(得分:5)
Hashtable
用于快速查找而不是维护订单。您应该查看LinkedHashMap
或其他数据结构。
答案 3 :(得分:4)
LinkedHashMap用于维护插入元素的顺序.Hashtable类似于HashMap,但它不允许空键或值,而HashMap允许一个空键和几个空值......
答案 4 :(得分:2)
来自地图Javadoc。
映射的顺序定义为地图集合视图上的迭代器返回其元素的顺序。一些地图实现,比如TreeMap类,对它们的顺序做出了特定的保证;其他人,比如HashMap类,没有。
查看Hashtable和HashMap的代码也非常有用。