注意:HashMap和HashSet的常用方法和TreeMap和TreeSet是一样的,不过是他们实现的底层原理是不一样的,HashMap和HashSet的底层原理是哈希表结构,这种结构与搜索树或者红黑树来说效率更高,因此在平时使用是我们通常使用Hash而非Tree。
但是哈希表结构也有缺陷:哈希冲突。
哈希冲突是无法避免的,我们能做的只有不断地减小哈希冲突所带来的影响,因此我们有一些方法去减小哈希冲突。
哈希表概念:
顺序结构以及平衡树中,元素关键码与其存储位置之间没有对应的关系,因此在查找一个元素时,必须要经过关键 码的多次比较。
顺序查找时间复杂度为O(N),平衡树中为树的高度,即O( ),搜索的效率取决于搜索过程中 元素的比较次数。
理想的搜索方法:可以不经过任何比较,一次直接从表中得到要搜索的元素。 如果构造一种存储结构,通过某种函 数(hashFunc)使元素的存储位置与它的关键码之间能够建立一一映射的关系,那么在查找时通过该函数可以很快 找到该元素。
当向该结构中: 插入元素 根据待插入元素的关键码,以此函数计算出该元素的存储位置并按此位置进行存放 搜索元素 对元素的关键码进行同样的计算,把求得的函数值当做元素的存储位置,在结构中按此位置取元素比较,若 关键码相等,则搜索成功 该方式即为哈希(散列)方法,哈希方法中使用的转换函数称为哈希(散列)函数,构造出来的结构称为哈希表(Hash Table)(或者称散列表).
HashMap和TreeMap以及TreeSet和TreeSet的使用方法是一样的。