HashMap的的底层原理
文章目录
前言
HashMap是Java语言中用的最频繁的一种数据结构。同样也是面试的时候必问 的问题之一,在学习Java语言的过程中只有搞懂这一系列的数据结构的底层原理才能去灵活的运用,最终提高自己的工作效率。在讲解HashMap之前我们想要了解平时常用的数据结构,以及他们的优缺点,才能明白hashMap的用处,以及优缺点。
一、数组和链表的优缺点
数组:
因为有角标的存在所以查询速度快时间复杂度为O(1),可以根据索引查询;但插入和删除比较困难,每一次的插入与删除我们都要把被插入位置或添加位置之后的元素全部移动使时间复杂度为O(n),而且数组的存储位置是连续的,而且数组一旦被创建,不管里面的有效个数,长度是固定的,所有难免会有浪费空间的时候。
链表:
由于我们用头节点表示一个链表,也不存在角标,我们要从头节点一次向下下遍历,所以我们每一次的查询速度慢时间复杂度为O(n),需要遍历整个链表,但插入和删除操作比较容易,只需要O(1)的时间复杂度,而且链表的存储是散列的,所以存多少开多少空间,空间浪