Java Map has key - Java中的HashMap和Hashtable有什么区别?

Java MapentrySet / java / collections / hashmap / hashtable

Java中的 HashMap Hashtable 有什么区别?

Steve Chambers



Answer #1

HashTable是同步的,如果在单个线程中使用它,则可以使用HashMap,它是非同步版本。不同步的对象通常具有更高的性能。顺便说一下,如果多个线程同时访问HashMap,并且其中至少一个线程在结构上修改了映射,则必须在外部进行同步。 Youn可以使用以下命令将未同步的映射包装到同步的映射中:

Map m = Collections.synchronizedMap(new HashMap(...));

Map返回的迭代器是快速失败的,如果在创建迭代器后的任何时候以任何方式对映射进行结构修改,除非通过迭代器自己的remove方法,否则迭代器将抛出 ConcurrentModificationException 。因此,面对并发修改,迭代器会快速干净地失败,而不会在未来的不确定时间内冒任意,不确定的行为的风险。Hashtable的keys和elements方法返回的枚举并不是快速失败的。