【问题标题】:HashMap and HashTable giving different Execution ResultHashMap 和 HashTable 给出不同的执行结果
【发布时间】:2015-10-08 08:02:21
【问题描述】:

基本上,我知道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 

为什么会有两个不同的结果。
两种情况下的排序方式不一样吗?
谢谢。

【问题讨论】:

  • 我可以从HashMapHashTable 的行为中看到,新项目被添加到HashMap 的列表末尾,但在HashTable 的情况下,它位于第一个元素之后。所以我可以说HashMap 追加元素,而HashTable 插入元素。
  • 好奇:你希望在这里证明什么?如果您想向自己证明这两个类之间的区别是什么,为什么会期望得到完全相同的结果?

标签: java hashmap hashtable


【解决方案1】:

HashMap 和 HashTable 不保证顺序。如果你想要排序你必须使用LinkedHashMap,你想要它被排序你必须使用TreeMap。

【讨论】:

  • 哦,谢谢您快速简洁的回复。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-23
    • 1970-01-01
    • 1970-01-01
    • 2021-09-30
    • 2016-07-07
    • 2012-07-12
    • 2021-09-25
    • 2023-03-30
    相关资源
    最近更新 更多