Java Hashtable和Hashmap有何不同

Java Hashtable和Hashmap有何不同,java,hashmap,hashtable,Java,Hashmap,Hashtable,可能重复: 我见过散列表和散列映射在不同的代码中使用,但它们看起来做的是相同的事情。他们之间有区别吗?我应该在代码中使用哪一个?也可能是由于争用问题的坏主意。并发应用程序需要更复杂的思考。。。如果您希望它们可以扩展。Hashtable或多或少被弃用ConcurrentHashMap设计用于在并发环境中工作,但在这方面做得更好。其哈希表,请注意t:)@GangnamStyleOverflower哇,从未注意到,哈哈=)

可能重复:


我见过散列表和散列映射在不同的代码中使用,但它们看起来做的是相同的事情。他们之间有区别吗?我应该在代码中使用哪一个?

方法是同步的,java.util.Hashmap方法不是。如果使用哈希表,则会出现性能问题,因为没有两个线程能够同时访问其方法。 如果您关心应用程序中的线程安全哈希表是一个不错的选择。如果你不关心线程的安全性,那么Hashmap是一种更有效的方法
另外,java.util.Hashtable不允许任何空键,其中as java.util.HashMap允许一个空键。

Hashtable是同步的,而as HashMap不是。这意味着,如果只有一个线程访问数据,请使用HashMap,否则请使用Hashtable。

Hashtable不允许空键,因为HashMap允许一个空键

是的,主要区别在于Hashtable是同步的,而HashMap不是。它们也有不同的超类层次结构。(FWIW,由于在并发环境中使用HashMap,我曾在几次大型商业应用程序中看到相当严重的失败。)顺便说一句,这是“HashMap”和“Hashtable”。注意资本化。你是否考虑过阅读JavaDoc?@ HooLiks-“我在一些场合看到在大型商业应用程序中由于在并发环境中使用HASMAP而出现相当严重的失败。”——但是使用“<代码>哈希表< /代码>也可能是由于争用问题的坏主意。并发应用程序需要更复杂的思考。。。如果您希望它们可以扩展。
Hashtable
或多或少被弃用
ConcurrentHashMap
设计用于在并发环境中工作,但在这方面做得更好。其哈希表,请注意
t
:)@GangnamStyleOverflower哇,从未注意到,哈哈=)