个性化阅读
专注于IT技术分析

Java中HashMap和HashTable之间有什么区别?

点击下载

HashMap和Hashtable将键/值对存储在哈希表中。当使用Hashtable或HashMap时, 我们指定一个用作键的对象, 以及要链接到该键的值。然后对键进行哈希处理, 并将所得哈希码用作将值存储在表中的索引。

示例Java代码。

//A sample Java program to demonstrate HashMap and HashTable
import java.util.*;
import java.lang.*;
import java.io.*;
  
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
     public static void main(String args[])
     {
         //----------hashtable -------------------------
         Hashtable<Integer, String> ht= new Hashtable<Integer, String>();
         ht.put( 101 , " ajay" );
         ht.put( 101 , "Vijay" );
         ht.put( 102 , "Ravi" );
         ht.put( 103 , "Rahul" );
         System.out.println( "-------------Hash table--------------" );
         for (Map.Entry m:ht.entrySet()) {
             System.out.println(m.getKey()+ " " +m.getValue());
         }
  
         //----------------hashmap--------------------------------
         HashMap<Integer, String> hm= new HashMap<Integer, String>();
         hm.put( 100 , "Amit" );
         hm.put( 104 , "Amit" );  
         hm.put( 101 , "Vijay" );
         hm.put( 102 , "Rahul" );
         System.out.println( "-----------Hash map-----------" );
         for (Map.Entry m:hm.entrySet()) {
             System.out.println(m.getKey()+ " " +m.getValue());
         }
     }
}

输出如下:

-------------Hash table--------------
103 Rahul
102 Ravi
101 Vijay
-----------Hash map-----------
100 Amit
101 Vijay
102 Rahul
104 Amit

哈希图与哈希表

1. HashMap不同步。它不是线程安全的, 没有适当的同步代码就无法在许多线程之间共享, 而哈希表是同步的。它是线程安全的, 可以与许多线程共享。

2. HashMap允许一个null键和多个null值, 而Hashtable不允许任何null键或值。

3.如果不需要线程同步, 通常首选HashMap而不是HashTable

为什么HashTable不允许null, 而HashMap不允许?

为了成功地从HashTable存储和检索对象, 用作键的对象必须实现hashCode方法和equals方法。由于null不是对象, 因此无法实现这些方法。 HashMap是Hashtable的高级版本和改进。 HashMap是在以后创建的。

相关文章:

  • Java中的HashMap和TreeMap
  • Java中的TreeMap, HashMap和LinkedHashMap之间的区别

资源:

http://docs.oracle.com/javase/6/docs/api/java/util/Hashtable.html:

如果发现任何不正确的地方, 或者想分享有关上述主题的更多信息, 请发表评论。

赞(0)
未经允许不得转载:srcmini » Java中HashMap和HashTable之间有什么区别?

评论 抢沙发

评论前必须登录!