数据结构-数组,链表,栈,队列,进阶HashMap

数据结构

数据结构是指相互之间存在一种或多种特定关系的数据元素的组合,其实也就是用来描述对象之间的逻辑关系的。
接下来介绍几种基础的数据结构的类型:
第一,数组
是最最最基础的一种数据结构,最基础体现在很多编译器都可以实现对数组的操作。数组的存储是提前划分一段连续的内存,记住一定是连续的。在查询数组的内容时,可以分为通过下标查询,通过内容查询,如果是通过下标查询就相当于给定一个下标,如果存有数据,那便立刻能够查到,如果没有数据,便返回null;如果通过内容查询,需要遍历整个数组,最好的情况是查询第一个数据,最坏的情况是遍历整个数组查询最后一个数据,对于一般的插入删除操作,涉及到数组元素的移动,其平均复杂度也为O(n)。
第二,链表
链表是一种动态的数据结构,体现在不需要提前划分内存空间,也不需要一段连续的内存空间,需要扩充存储容量时,创建即可,但相比于数组,插入删除的操作只需要处理节点间的引用即可,但对于查询,需要遍历整个链表,其时间复杂度是O(n)。
第三,
栈实现的是数据的先进后出,也可以用数组和链表来实现栈,对栈的所有操作是在栈顶进行的,只能查询栈顶元素,像栈顶插入元素,从栈顶弹出元素。
第四,队列
队列实现数据的先进先出,通俗讲就是我们排队时,早排队的早操作,只能从队头弹出数据,队尾插入数据。
进阶吗??? HashMap
HashMap是集合了数组和链表各自的优点,其中数组是HashMap的主题,二链表是为了解决冲突而出现的。比如当我们要查找和新增一个元素的时候,我们可以通过当前元素的关键值,利用某个哈希函数映射到某个数组,通过数组下标一次定位便可完成操作。哈希函数的好坏直接影响到哈希表的优劣,存储位置=哈希函数 f(关键值),哈希冲突就是当我们对某个元素的关键值通过哈希函数进行计算后得到一个存储位置,在我们要插入这个元素时发现这个存储位置已被占用,那么就将这个存在的问题叫做哈希冲突。
对于哈希冲突的解决方法有很多,如开放地址法,即是当我们存储位置被占用后,继续连续寻找下一块未被占用的地址,这也可能造成占用后面要存储元素计算所得的位置;再散列函数法;链地址法,而HashMap所采用的就是链地址法的哈希冲突的解决方法。实现值value-关键值key的映射关系。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值