java基础之数据结构(ArrayList、LinkedList、Stack、Queue、HashMap)

java基础之数据结构(ArrayList、LinkedList、Stack、Queue、HashMap)

ArrayList 和LinkedList

ArrayList底层以数组实现,内存地址连续固定,
查找快(当使用get方法查找时,可以直接计算出数组的下标位置获取到值)
增删慢,(当使用add方法和remove方法增删元素时会把数组扩容在把元素插入到指定位置,删除元素则会把指定元素删除再缩容。一次分配,分配好不会有频繁插入和删除的动作,这样的数据是适合ArrayList的)。

LinkedList底层以链表实现,内存地址分散不固定,
查找慢(当使用get方法查找时,由于地址空间不连续只能从首元素开始,依次获得下一个元素的地址)
增删快(当使用add方法和remove方法增删元素时,由于是双向链表只需要改变头尾节点的引用即可,适合占空间比较小,元素频繁插入和删除,这样的数据是适合LinkedList的)。

Stack

放入一个元素,push,称为入栈,也称为压栈
栈后进的元素必须在最尾巴
获取一个元素,pop,称为出栈,也称为弹栈
获取尾巴元素,然后把栈中的这个元素删除
栈:先入后出,一个一个压栈,一个一个弹栈

Queue

队列特点:先进先出
出队,从队列中读取,就从队列中移除
入队,只能在队列尾巴,然后排队

HashMap

在 JDK 1.7 中 HashMap 是以数组加链表的形式组成的,JDK 1.8 之后新增了红黑树的组成结构,HashMap 的初始化容量是 16,那么当 HashMap 中有 16*0.75=12个元素时,HashMap 就会进行扩容,当链表大于 8 并且容量大于 64 时,链表结构会转换成红黑树结构,JDK 1.8 之所以添加红黑树是因为一旦链表过长,会严重影响 HashMap 的性能,而红黑树具有快速增删改查的特点,这样就可以有效的解决链表过长时操作比较慢的问题。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值