博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java | 源码阅读之Vector对比ArrayList
阅读量:6882 次
发布时间:2019-06-27

本文共 811 字,大约阅读时间需要 2 分钟。

hot3.png

有人说Vector与 ArrayList除了一些同步的区别外,其他都一样,那我就来对比阅读下,看下究竟是不是只有这点区别:

  1. 底层都是通过Object[] ,即一个对象数组来实现的。
  2. 构造函数: a. 都有无参构造函数、确定初始大小的构造函数和传入集合的构造函数:Constructor(initialCapacity)Construtor()Constructor(Collection); b. Vector有一个构造函数Vector(initialCapacity, capacityIncrement),说明Vector是可以指定扩容大小的,那么在他的Vector(initialCapacity)中,这个capacityIncrement=0,这种情况下,Vector是2倍扩容的,而ArrayList则是1.5倍扩容。
  3. grow方法:除了扩容大小不同(Vector为2,ArrayList为1.5)外,完全一样。
  4. 添加元素: a. 在末尾添加:ArrayList和Vector操作一样,每添加一个元素,扩容,然后copy数组(开销大); b. 在中间插:操作一样,首先检查范围是否越界,然后扩容,在将要插入位置后的元素全部往后移,再将该位置插入相应的元素。
  5. 删除元素:不用检查容量,直接将要删除元素的位置处之后的元素前移,然后将最后一个位置元素置为null;需要注意的是,两个类都有两种remove方式,一种是利用index删除,这种方式需要边界检查,返回删除的;另一种是remove(Object),这种方式不用检查越界,且不返回删除的值;

VectorArrayList代码思路基本上是一样的,可能个别函数的实现会有些许差异,以上是我在对比阅读时注意的一些内容,其他如有遗漏,欢迎补充。

PEACE OUT

转载于:https://my.oschina.net/dantefu/blog/1557104

你可能感兴趣的文章
产品经理的新三观:数据观、格局观、细节观
查看>>
大数据技术服务商个推获4亿人民币D轮融资
查看>>
Centos命令系列 之 screen
查看>>
Mac OS X版本的sublime text 3安装汇编语言语法支持
查看>>
Git的详细使用教程
查看>>
[sync4j]Nokia手机和sync4j服务器同步的第四次手机登录,手工新建了syncSource同步源...
查看>>
Java锁的种类以及辨析(三):阻塞锁
查看>>
谈谈游戏服务器的发送数据处理
查看>>
Cocos2D iOS之旅:如何写一个敲地鼠游戏(七):弹出地鼠
查看>>
MySQL · 引擎特性 · InnoDB 事务锁简介
查看>>
Android 逃离adapter的地狱-针对多个View type的组合实现方案
查看>>
鏖战双十一-阿里直播平台面临的技术挑战
查看>>
3.15 晚会—「饿了么」之殇
查看>>
PostgreSQL on XFS 性能优化 - 2
查看>>
Android] Android开发优化之——使用软引用和弱引用
查看>>
[LeetCode]40.Combination Sum II
查看>>
python里的拆包、引用、递归与匿名函数
查看>>
关于前端项目代码检测~
查看>>
初探 BaconJS
查看>>
开源改变世界,改变你和我
查看>>