同步性:Vector 中的 public 方法多数添加了 synchronized 关键字、以确保方法同步、也即是 Vector 线程安全、ArrayList 线程不安全
性能:Vector 存在 synchronized 的锁等待情况、需要等待释放锁这个过程、所以性能相对较差
扩容大小:ArrayList在底层数组不够用时在原来的基础上扩展 0.5 倍 , Vector 默认是扩展 1 倍 扩容机制 , 扩容方法其实就是新创建一个数组 , 然后将旧数组的元素都复制到新数组里面 。 其底层的扩容方法都在grow() 中(基于JDK8)
- ArrayList 的 grow() , 在满足扩容条件时、ArrayList以1.5 倍的方式在扩容(oldCapacity >> 1 , 右移运算 , 相当于除以 2 , 结果为二分之一的 oldCapacity)
- Vector 的 grow() , Vector 比 ArrayList多一个属性 capacityIncrement , 可以指定扩容大小 。 当扩容容量增量大于 0 时、新数组长度为 原数组长度**+**扩容容量增量、否则新数组长度为原数组长度的 2 倍
ArrayList 与 LinkedList 区别
- 是否保证线程安全:ArrayList 和 LinkedList 都是不同步的 , 也就是不保证线程安全;
- 底层数据结构:Arraylist 底层使用的是 Object 数组;LinkedList 底层使用的是双向循环链表数据结构;
- 插入和删除是否受元素位置的影响:
- ArrayList 采用数组存储 , 所以插入和删除元素的时间复杂度受元素位置的影响 。 比如:执行 add(E e)方法的时候 ,ArrayList 会默认在将指定的元素追加到此列表的末尾 , 这种情况时间复杂度就是O(1) 。 但是如果要在指定位置 i 插入和删除元素的话( add(intindexE element))时间复杂度就为 O(n-i) 。 因为在进行上述操作的时候集合中第 i 和第 i 个元素之后的(n-i)个元素都要执行向后位/向前移一位的操作 。
- LinkedList 采用链表存储 , 所以插入 , 删除元素时间复杂度不受元素位置的影响 , 都是近似, 而数组为近似。
- ArrayList 一般应用于查询较多但插入以及删除较少情况 , 如果插入以及从删除较多则建议使用 LinkedList
- 是否支持快速随机访问:LinkedList 不支持高效的随机元素访问 , 而 ArrayList 实现了 RandomAccess 接口 , 所以有随机访问功能 。 快速随机访问就是通过元素的序号快速获取元素对象(对应于 get(intindex)方法) 。
- 内存空间占用:ArrayList 的空间浪费主要体现在在 list 列表的结尾会预留一定的容量空间 , 而 LinkedList 的空间花费则体现在它的每一个元素都需要消耗比 ArrayList 更多的空间(因为要存放直接后继和直接前驱以及数据) 。
高级工程师的我 , 可不得看看源码 , 具体分析下:
- ArrayList工作原理其实很简单 , 底层是动态数组 , 每次创建一个 ArrayList 实例时会分配一个初始容量(没有指定初始容量的话 , 默认是 10) , 以add方法为例 , 如果没有指定初始容量 , 当执行add方法 , 先判断当前数组是否为空 , 如果为空则给保存对象的数组分配一个最小容量 , 默认为10 。 当添加大容量元素时 , 会先增加数组的大小 , 以提高添加的效率;
- LinkedList 是有序并且支持元素重复的集合 , 底层是基于双向链表的 , 即每个节点既包含指向其后继的引用也包括指向其前驱的引用 。 链表无容量限制 , 但双向链表本身使用了更多空间 , 也需要额外的链表指针操作 。 按下标访问元素 get(i)/set(ie) 要悲剧的遍历链表将指针移动到位(如果i>数组大小的一半 , 会从末尾移起) 。 插入、删除元素时修改前后节点的指针即可 , 但还是要遍历部分链表的指针才能移动到下标所指的位置 , 只有在链表两头的操作add() ,addFirst() , removeLast()或用 iterator()上的 remove() 能省掉指针的移动 。 此外 LinkedList 还实现了 Deque(继承自Queue接口)接口 , 可以当做队列使用 。
推荐阅读
-
-
反黑路人甲|《反黑路人甲》:丧钟说要双坐馆,预订盒饭的节奏,你认识大D哥吗?
-
美国▲唯一称呼中国为“斯坦”的国家,“斯坦”到底是何意?很多人错了
-
-
Redmi|Redmi K50至尊版8+256G和12+512G版最香 卢伟冰:强烈推荐
-
盘算机科学与技巧专业到底学什么? 盘算机专业重要学什么?
-
-
增幅|扭亏为盈!猪价高位运行,正邦科技上半年净利预计增9倍
-
-
公司|中潜股份:遭证监会立案调查 终止重大资产重组股票复牌
-
快车报|LX、别克新款昂科威都上市了,哪吒V、广汽新能源新款Aion
-
委内瑞拉政府|委内瑞拉逮捕美国公民,指控其为间谍并密谋袭击石油电力系统
-
「新华社新闻」受新冠疫情影响撒哈拉以南非洲地区经济将陷困局
-
梅吹的吹|32岁天王再演砸,3年肥约已成大包袱,巴萨1亿双星拉开差距
-
手工制作教师节贺卡(教您做简单又好看的教师节贺卡)
-
S21赛季|官方公布21秒视频,S21赛季战令皮肤为大乔?实则另有他人
-
「懂小姐的小姐」小儿子的鞋子太惹眼,引起网友热议,靳东妻子晒父子牵手合照
-
手机|不会用手机支付的大爷以为遇到“好心人”,没想到……
-
第一电动网▲宝马3系/X3/X4轻度混合动力车确认将于2020年推出
-