Java集合部分知识

集合

ArrayList 和LinkedList

ArrayList底层是一个数组,默认的数组长度是10,(用户也可以自己指定数组的大小)扩容的方式(扩容1.5倍,如果发现数组长度大于Integer的最大值 就会调用hugeCapacity),否则就扩容1.5倍,指定位置查找元素,使用for循环遍历查找,找到返回指定位置下表,没找到则返回-1,添加数组则会判断数据的下表是否超过了数组容量,如果超过了就会进行1.5倍扩容,否则直接放到该下表,删除数据,判断下表是否合法,如果将该位置的下一个以知道数组末尾向前复制,size下标置为null。
LinkedList 底层是一个双向链表,他的add操作默认是尾插法,而且LinkedList
的remove操作默认是删除头节点.
二者的区别
底层:前者是数组,后者是链表
访问数据的效率,前者的效率要比后者的效率要高
插入删除数据的效率:后者的效率要比前者高
占用的内存:后者的占用内存要比前者的大
适用的场景:就要结合两者的优点来分析,如果你对某个索引的元素进行大量的删除和插入操作,后者的效率远远高于前者,如果你想针对某个程进型大量的存取和存储操作,前者的效率就远远大于后者。

Queue和Stack

栈是一种特殊的线性表,只允许从一端插入和删除元素,满足先进后出的原则
压栈,将数据放到size位置上,size向后移,出栈,返回size位置的元素,size–,判断栈是否为空,即就是判断size是否为0 ,
Queue 是从一端插入数据从另外一段删除数据,满足先进先出的原则
栈和队列的区别:规则不同,队列:先进先出,栈:先进后出,插入和删除的位置不同,遍历数据的速度不同,队列,是基于指针遍历,而栈是从顶部获取数据 。
队列的应用场景,就如名字,排序,不允许任何元素插队,
而栈就是先进后出,可以很好的控制访问控制,就比如逆序输出就会用到栈

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值