HashMap和HashTable提供不同的执行结果

时间:2015-10-08 08:02:21

标签: java hashmap hashtable

基本上,我知道HashMap和HashTable之间的区别。

我试图通过实际编码来理解它们之间的区别。

这是我在Java中的主要方法

System.out.println("HashMap");
HashMap <String , String> map = new HashMap<String, String>();
map.put("A", "Hello");
map.put("B", "World");
Set<String> set = map.keySet();
map.put("C", "YoYo");
Iterator<String> itr = set.iterator();
while(itr.hasNext())
{
    String temp = itr.next();
    System.out.println(temp +" value: "+ map.get(temp));
}

System.out.println("HashTable");
Hashtable<String ,  String> table = new Hashtable<>();
table.put("A", "Hello");
table.put("B", "World");
Set<String> set2 = table.keySet();
table.put("C", "YoYo");
Iterator<String> itr2 = set2.iterator();
while(itr2.hasNext())
{
    String temp = itr2.next();
    System.out.println(temp +" value: "+ table.get(temp));   
}

这是我得到的输出:

HashMap    
A value: Hello    
B value: World    
C value: YoYo    
HashTable    
A value: Hello    
C value: YoYo    
B value: World 

为什么会有两种不同的结果 在两种情况下都不是以相同的方式排序吗? 谢谢。

2 个答案:

答案 0 :(得分:5)

HashMap和HashTable不保证订单。如果你想要订购,你必须使用LinkedHashMap,你需要对它进行排序,你必须使用TreeMap。

答案 1 :(得分:1)

这是因为两个类都不保证迭代顺序。

您可能想看看下面的内容: is the Java HashMap keySet() iteration order consistent?