HashMap与HashTable区别(Differences between HashMap and Hashtable)

翻译 2014年09月11日 15:02:26
在stackoverflow.com上看到这个标题

Differences between HashMap and Hashtable?

大意如下:

1,Hashtable是同步的,HashMap不是同步的。没有被同步的对象比同步的对象一般执行得更快,这使得HashMap更加适用于没有多线程的应用当中。
2,Hashtable不许与为null的键或者值。HashMap可以允许存在一个为null的键和任意多个null的值。
3,LinkedHashMap是一个HashMap的子类。对于一个LinkedHashMap,你可以按照预知迭代的顺序(按照默认插入的顺序),转换数据到HashMap。但是要转化为一个Hashtable可就难了。


如何来选用:

如果同步不是主要问题,推荐使用HashMap,如果同步问题是个问题,应该参照ConcurrentHashMap这个类。



There are several differences between HashMap and Hashtable in Java:

  1. Hashtable is synchronized, where as HashMap is not. This makes HashMap better for non-threaded applications, as unsynchronized Objects typically perform better than synchronized ones.

  2. Hashtable does not allow null keys or values. HashMap allows one null key and any number of null values.

  3. One of HashMap's subclasses is LinkedHashMap, so in the event that you'd want predictable iteration order (which is insertion order by default), you could easily swap out the HashMap for a LinkedHashMap. This wouldn't be as easy if you were using Hashtable.

Since synchronization is not an issue for you, I'd recommend HashMap. If synchronization becomes an issue, you may also look at ConcurrentHashMap.

类ConcurrentHashMap:

 ConcurrentHashMap和java.util.HashTable 类非常相似,  ConcurrentHashMap比  HashTable 有更好的并发性。 ConcurrentHashMap在读取数据的时候不会给 Map加锁 。除此之外, ConcurrentHashMap 在写入数据的时候,不锁住整个。 它只对Map中将要写入的数据的那一部分内存加锁

另一个不同点是如果ConcurrentHashMap在迭代的过程中改变了数据,ConcurrentHashMap 不抛出ConcurrentModificationException 异常。迭代器 Iterator 不是设计来为多线程使用的。

例子:

ConcurrentMap concurrentMap = new ConcurrentHashMap();

concurrentMap.put("key", "value");

Object value = concurrentMap.get("key");




相关文章推荐

What is difference between HashMap and Hashtable in Java?

HashMap vs Hashtable in Java Though both Hashtable and HashMap are data-structure based upon hashin...
  • e891377
  • e891377
  • 2017年05月23日 23:14
  • 165

Why ConcurrentHashMap is better than Hashtable and just as good as a HashMap

Original from Why ConcurrentHashMap is better than Hashtable and just as good as a HashMap Concurre...
  • slm007
  • slm007
  • 2011年05月18日 15:36
  • 299

hashmap与hashtable区别

  • 2009年05月08日 14:46
  • 1KB
  • 下载

Hashtable和HashMap的区别:

  • 2009年06月03日 17:06
  • 3KB
  • 下载

[Java] Hashtable, HashMap and HashSet

java.util.Hashtable This class implements a hash table, which maps keys to values. Any non-null...

HashMap与HashTable和HashSet的区别

  • 2008年04月23日 10:23
  • 4KB
  • 下载

最全面的HashMap和HashTable的区别

找工作期间不少企业都会问到有关HashMap和HashTable两者直接的区别,很多博客里虽然有提及但总是没有那么全面,只是一些常用的不同,现在就我自己所总结的比较全面的不同,归纳以下:...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:HashMap与HashTable区别(Differences between HashMap and Hashtable)
举报原因:
原因补充:

(最多只允许输入30个字)