哈希表的结构
哈希表(Hash table),也叫散列表,是一种根据关键码值(Key value)而直接进行访问的数据结构。
哈希表通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数。哈希表的结构通常由数组和链表组成。在Java7及之前,哈希表是数组和链表的组合。在Java8及之后,哈希表可以是数组和链表的组合,或者数组和红黑树的组合,以提高查询的速度。
哈希表的查询、增删速度非常快,但创建速度非常慢。哈希表不允许存储重复元素,因为集合中存储的只能是类对象或者是自定义对象,不能是基本类型。
哈希表在调用添加元素的方法时,会先调用元素的hasCode()和equals()两个方法,以判断元素是否重复。如果哈希值不一样,则存储到对应哈希值下;如果一样,则调用equals(),返回false则存储到对应哈希值下。
