在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
取出来的后跟放进来的顺序不一样,
有没有方法可以解决?
如:
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
用list
简单的说比方说一个容量为100的数组。然后你的一个key值是cat,然后会通过一个hash函数,把cat转换成一个下标。比方说10,然后把这个值传存入这个数组第10个位置上。这就是hashmap。所以不可能出现存取顺序一致的hashmap的。
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);
}
}
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*/