hashmap为什么用红黑树 hashtable实现了哪个接口?
hashtable实现了哪个接口?
哈希表和哈希映射之间的区别:
1。Hashtable是dictionary的子类,HashMap是map接口的实现类;
2。hashtable中的方法是同步的,而HashMap中的方法默认是异步的。也就是说,在多线程应用程序中,hashtable可以安全地使用,不需要特殊的操作;对于HashMap,需要额外的操作,但是HashMap的同步问题可以通过一个静态的集合方法来解决:map集合.synchronizedMap(Map m)此方法返回一个同步映射,它封装了底层HashMap的所有方法,使得底层HashMap即使在多线程环境中也是安全的。在HashMap中,null可以用作键,并且只有一个这样的键;一个或多个键可以具有对应的null值。当get()方法返回一个null值时,表示HashMap中没有键。这个键还可以指示对应于这个键的值为null。因此,在HashMap中,我们不能使用get()方法来确定HashMap中是否有键,而应该使用containskey()方法来确定
1。键和值都不能为null,这是线程安全的。实现线程安全的方法是在修改数据时锁定整个哈希表,效率很低
2。初始大小为11,展开:newsize=oldsize*21
1。可以存储空键和空值,但线程不安全
2。初始大小是16,扩展:newsize=oldsize*2,大小必须是2的n次方
哈希表是线程安全的,HashMap是非线程安全的。Hashtable是基于旧的dictionary类,HashMap是在引入map接口后对java1.2的重新实现。哈希表方法,锁同步,可用于多线程环境。HashMap需要程序员提供同步,以便它在多线程中运行。常用的方法是使用collections类的static synchronizedmap()方法来创建线程安全映射对象或使用并发HashMap。
hashmap为什么用红黑树 treemap和hashmap区别 hashmap和hashtable的区别
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。