HashMap的特点:
- 允许使用null键和null值,与 HashSet一样,不保证映射的顺序。
- 所有的key构成的集合是set:无序的、不可重复的。所以,key所在的类要重写equals()和 hashCode()
- 所有的value构成的集合是Collection:无序的、可以重复的。所以,value所在的类要重写:equals()
- 一个key-value构成一个entry,所有的entry构成的集合是Set:无序的、不可重复的
- HashMap判断两个key相等的标准是:两个key通过equals()方法返回true,hashCode值也相等。
- HashMap判断两个value相等的标准是:两个value通过equals()方法返回true。
- HashMap的底层: 数组+链表 (JDK 7.0及之前)
数组+链表+红黑树 (JDK 8.0以后)
HashMap实现原理:jdk7.0
HashMap中主要存储着一个Entry的数组table,Entry就是数组中的元素,Entry实现了Map.Entry所以其实Entry就是一个key-value对,并且它持有一个指向下一个元素的引用,这样构成了链表