东陆之滇

爱是永恒,不可休

导航

2018年6月20日 #

【java源码】解读HashTable类背后的实现细节

摘要: 要在hashtable中存储和检索对象,作为key的对象必须实现hashCode、equals方法。 一般来说,默认的加载因子(0.75)提供了一种对于空间、时间消耗比较好的权衡策略。太高的值(指加载因子loadFactor)虽然减少了空间开销但是增加了检索时间,这反应在对hashtable的很多操作中,比如get、put方法。 初始容量的控制也是在空间消耗和rehash操作耗时(该操作耗时较大)二者之间的权衡。 如果初始容量大于哈希表的当前最大的条目数除以加载因子,则不会发生rehash。但是,将初始容量设置过高会浪费空间。 如果有大量的数据需要放进hashtable,则选择设置较大的初始容量比它自动rehash更优。 在Java平台v1.2中,这个类被重新安装以实现Map接口,使它成为Java集合框架的成员。与新的集合实现不同,Hashtable是同步的。如果不需要线程安全的实现,建议使用HashMap代替Hashtable。如果想要一个线程安全的高并发实现,那么建议使用java.util.concurrent.ConcurrentHashMap取代了Hashtab 阅读全文

posted @ 2018-06-20 15:25 东陆之滇 阅读(208) 评论(0) 推荐(0) 编辑