DESKTOP-66G939K_20200911包国强

1.问题

1.HaseMap和hasetable的区别.

解决

相同

1.两者都实现 Map 接口,用于存放键值对。

2.内部都采用 哈希表 实现,都采用 哈希算法计算键值对的存放位置。

区别

一.是否支持线程安全

1.HashMap非线程安全,理论上效率较高。

2.Hashtable 线程安全,理论上效率较低。

二.内部实现不同

1.从 JDK 1.8 ( Java 8 ) 开始,HashMap 内部采用 数组 + 链表 + 红黑树 方式存储。

2.当链表长度大于8时会自动转换成红黑树

3.当链表长度小于6时,红黑树重新转换成链表

4.而 Hashtable 内部则采用 数组 + 链表 实现

三.对元素位置的计算方法不同

1.HashMap 内部采用一个单独的方法根据 key.hashCode() 重新计算一个哈希值后再确定元素存放位置

2.Hashtable 内部直接采用 key.hashCode() 来确定元素存放位置

四.两者所继承的类不同

1.HashMap 类继承的是AbstraceMap 类

2.Hashtable 类继承的是 Dictionary 类

五.是否支持 null

1.HashMap 支持 null 键 和 null 值

2.Hashtable 不支持 null 键 和 null 值

2.吐槽

宿舍里总感觉潮潮的,呆着很不舒服。