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:
如果发现任何不正确的地方, 或者想分享有关上述主题的更多信息, 请发表评论。
推荐阅读
- IPv4和IPv6之间有什么区别()
- C语言中的指针和数组之间有什么区别()
- 算法题(求两个大数的差)
- 算法题(m个元素的两个子集之间的最大差)
- 反向索引与正向索引之间的差异
- C/C++中的int main()和int main(void)之间的区别()
- Redis Sentinel 实现高可用
- 高可用业务系统你必须知道的点
- 抓包青花瓷使用教程①