1HashTable是同步方法中使用hashmaphashtable区别了Synchronizehashmaphashtable区别的而HashMap是未同步方法中缺省Synchronizehashmaphashtable区别的2Hashtable线程安全,因为它每个方法中都加入了Synchronize,在多线程并发的环境下,可以直接使用Hashtable,不需自己在加同步HashMap线程不安全,因为HashMap底层是一个Entry数组,当发生hashmap冲突的时候。
HashMap和Hashtable的主要区别如下线程安全性HashMap非线程安全在并发访问时需要外部同步Hashtable线程安全所有方法都是同步的,适合多线程环境空键值对支持HashMap允许插入null键和null值,提供了更高的灵活性Hashtable不允许插入null键和null值方法命名HashMap使用标准的Map。
这篇文章中,hashmaphashtable区别我们不仅将会看到HashMap和Hashtable的区别,还将看到它们之间的相似之处HashMap和Hashtable的区别 HashMap和Hashtable都实现了Map接口,但决定用哪一个之前先要弄清楚它们之间的分别主要的区别有线程安全性,同步synchronization,以及速度HashMap几乎可以等价于Hashtable,除了HashMap。
ConcurrentHashMap是使用了锁分段技术来保证线程安全的锁分段技术 首先将数据分成一段一段的存储,然后给每一段数据配一把锁,当一个线程占用锁访问其中一个段数据的时候,其他段的数据也能被其他线程访问ConcurrentHashMap提供了与Hashtable和SynchronizedMap不同的锁机制Hashtable中采用的锁机制是。
HashMap是非同步的,它在单线程环境中性能更高但在多线程环境中,如果不进行额外的同步处理,可能会导致数据不一致TreeMap同样是非同步的,适用于单线程环境或需要手动进行同步处理的多线程环境null键值支持Hashtable不支持null键和null值如果尝试插入null键或null值,会抛出NullPointerExcep。
HashMap是非synchronized,而Hashtable是synchronized,这意味着Hashtable是线程安全的,多个线程可以共享一个Hashtable而如果没有正确的同步的话,多个线程是不能共享HashMap的Java 5提供了ConcurrentHashMap,它是HashTable的替代,比HashTable的扩展性更好另一个区别是HashMap的迭代器Iterator是fail。
区别 HashMap允许null键和null值,不保证映射的顺序,性能较高 HashTable不允许null键和null值,线程安全,但性能较低 HashSet不允许重复元素,基于HashMap实现,添加元素时需要重写hashCode和equals方法以确保唯一性 concurrentHashMap线程安全,通过分段锁提高并发性能,允许null键但不允许n。
hashmap和hashtable的区别一hash数组默认大小不同 1HashMapHashMap中 hash数组的默认大小是16,而且一定是2的指数2HashtableHashTable中hash数组默认大小是11,增加的方式是 old*2+1二线程安全不同 HashMap不是线程安全的,HashTable是线程安全HashMap允许空null键值key。
还没有评论,来说两句吧...