HashMap 和 Hashtable 的区别有哪些?HashMap 的实现原理是什么?
- 作者:创始人
- 发表时间:2021-12-06 09:43:43
在大家Java面试过程中,可能又遇到过这样的题目,HashMap 和 Hashtable 的区别有哪些?HashMap 的实现原理是什么?
HashMap 和 Hashtable 的区别有哪些?
hashMap去掉了HashTable 的contains方法,但是加上了containsValue()和containsKey()方法。hashTable同步的,而HashMap是非同步的,效率上逼hashTable要高。hashMap允许空键值,而hashTable不允许。
HashMap 的实现原理是什么?
HashMap概述: HashMap是基于哈希表的Map接口的非同步实现。此实现提供所有可选的映射操作,
并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。
HashMap的数据结构: 在java编程语言中,最基本的结构就是两种,一个是数组,另外一个是模拟指
针(引用),所有的数据结构都可以用这两个基本结构来构造的,HashMap也不例外。HashMap实际
上是一个“链表散列”的数据结构,即数组和链表的结合体。
当我们往Hashmap中put元素时,首先根据key的hashcode重新计算hash值,根绝hash值得到这个元素在
数组中的位置(下标),如果该数组在该位置上已经存放了其他元素,那么在这个位置上的元素将以链表的形
式存放,新加入的放在链头,最先加入的放入链尾.如果数组中该位置没有元素,就直接将该元素放到数组的
该位置上。
需要注意Jdk 1.8中对HashMap的实现做了优化,当链表中的节点数据超过八个之后,该链表会转为红黑树
来提高查询效率,从原来的O(n)到O(logn)
HashMap 和 Hashtable 的区别有哪些?HashMap 的实现原理是什么?关注知了堂成都Java培训,带你了解更多Java相关知识和更多相关问题。