Hashtable中put进去的对象是否保持put的顺序

KillerMan 03-07-20

下边是代码
Hashtable hs = new Hashtable();
hs.put("1","one");
hs.put("2","two");
hs.put("3","three");

Enumeration enumeration = hs.elements();
while (enumeration.hasMoreElements()) {
String element = (String) enumeration.nextElement();
System.out.println(element);
}
输出结果为:
three
two
one
从结果看Enumeration以后里面对象的顺序是原来的倒叙。
问题是这种顺序是不是恒定的。hashtable 的element是加了synchronized修饰符的,在多个客户使用时,顺序是否会发生变化?

KillerMan
2003-07-20 21:46

在做一个基础的东西,必须搞清楚这点,否则以后死了都不知道怎么死的。

raynix
2003-07-20 22:30

好像我以前试过,不能保证次序。记不清了。不过用ArrayList肯定是保持次序的。

missxkl
2003-07-21 11:58

在原来的项目中试过。顺序不能保持
好想是根据散列码来的,顺序是随机
至于位置会不会发生变化,不清楚
应该不会,不然每次放入新对象......

AreYouOK?
2003-07-21 12:06

Map,Set都是没有顺序的,List才有顺序
SortedMap可以保持一定的顺序,不过不是你插入的顺序,而是排序

我以前也碰到这个问题,后来自己写了一个OrderedMap

2Go 1 2 下一页