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不允许?
【Java中HashMap和HashTable之间有什么区别()】为了成功地从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:
如果发现任何不正确的地方, 或者想分享有关上述主题的更多信息, 请发表评论。

    推荐阅读