ArrayList和Vector区别及源码
本文基于jdk1.7
1.ArrayList

类图来自:作者 Java3y
源码分析:
1.1 属性

1.2 构造方法


Arrays.copyOf源码:

1.3 trimToSize方法, 修改当前 ArrayList实例的容量为存入的实际值数量的大小。

1.4 扩容方法,以确保它可以至少保存mincapacity个元素数(扩容原理:以1.5倍进行扩容,使用Array.copyOf复制数组到新的数组,并且使用扩容后的新数组的引用)

1.5 grow扩容算法,增加原来的1.5倍

1.5 add 向ArrayList中添加元素(一直调用系统方法插入元素,所以特别消耗资源)


1.6 remove方法

2.Vector
2.1成员变量

2.2 构造方法

2.3 扩容方法

综上所述:
两者之间的区别:
1.ArrayList是线程不安全的,而Vector是线程安全的。
2.ArrayList扩容大小是原来的0.5倍,而Vector是原来的1倍,并且Vector可以设置扩容大小,ArrayList则不可以设置,但是两者都是通过Arrays.copyOf()方法进行扩容的。
3.ArrayList效率高于Vector。
4.两者都可以设置初始数组的大小,
ArrayList和Vector区别及源码的更多相关文章
- ArrayList、Vector、LinkedList源码
List接口的一些列实现中,最常用最重要的就是这三个:ArrayList.Vector.LinkedList.这里我就基于JDK1.7来看一下源码. public class ArrayList< ...
- Java 集合系列 05 Vector详细介绍(源码解析)和使用示例
java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java ...
- ArrayList与Vector区别
ArrayList与Vector区别表 ArrayList Vector 1.实现原理:采用动态对象数组实现,默认构造方法创建了一个空数组 1.实现原理:采用动态数组对象实现,默认构造方法创建了一个大 ...
- Vector和Stack源码分析/List集合的总结
序言 这篇文章算是在这list接口下的集合的最后一篇了,前面ArrayList.LinkedList都已经讲解完了,剩下就Vector和Vector的子类Stack啦.继续努力.一步一个脚印, --W ...
- ArrayList和Vector区别
java基础之ArrayList和Vector的主要区别: List接口下一共实现了三个类:ArrayList,Vector,LinkedList. LinkedList主要保持数据的插入顺序的时候使 ...
- 集合之ArrayList(含JDK1.8源码分析)
一.ArrayList的数据结构 ArrayList底层的数据结构就是数组,数组元素类型为Object类型,即可以存放所有类型数据.我们对ArrayList类的实例的所有的操作(增删改查等),其底层都 ...
- Java 集合系列06之 Vector详细介绍(源码解析)和使用示例
概要 学完ArrayList和LinkedList之后,我们接着学习Vector.学习方式还是和之前一样,先对Vector有个整体认识,然后再学习它的源码:最后再通过实例来学会使用它.第1部分 Vec ...
- getJSONObject与optJSONObject的区别,结合源码分析
*json解析常见问题: getJSONObject与optJSONObject的区别,下面结合源码和案例来分析当我们使用这两周方法来解析数据时,哪种比较好. 源码分析: //使用getJSONObj ...
- Java 集合系列之 Vector详细介绍(源码解析)和使用示例
Vector简介 Vector 是矢量队列,它是JDK1.0版本添加的类.继承于AbstractList,实现了List, RandomAccess, Cloneable这些接口. Vector 继承 ...
随机推荐
- Oracle官方文档学习路线图
- Web服务器Tomcat集群与负载均衡技术
我们曾经介绍过三种Tomcat集群方式的优缺点分析.本文将介绍Tomcat集群与负载均衡技术具体实施过程. 在进入集群系统架构探讨之前,先定义一些专门术语: 1. 集群(Cluster):是一组独立的 ...
- oracle 11g杀掉锁的sql
oracle 11g杀掉锁的sql [引用 2013-3-6 17:19:12] 字号:大 中 小 --查询出出现锁的session_idselect session_id from v$lo ...
- 移动端调试技巧(禁止webviuew,inspect等)
如果由于某种原因(天朝FQ),不能支持google 的 inspect 调试 或者再想在某个APP里面调试你的页面,但是没有打开APP的webview ,也不能授权调试 在或者,Fider 可以拦截 ...
- 解决Select标签的Option在IE浏览中display:none不生效的问题
页面的Select标签,需要控制Select的Option不需要显示,根据条件来隐藏某些Option选项. 正常情况下使用hide()就能实现,hide()方法实际是给Option加上display属 ...
- Scala编程入门---面向对象编程之对象
对象 Object,相当于class单个实例,通常在里面放一些静态的filed或method 第一次调用object方法时候,就会执行object的constructor,也就是Object中不在me ...
- Fibonacci数列的解法
Fibonacci数列的解法: 1.递归算法 递归的概念,我说不清楚,语文不好.但是核心思想,我认为就是入栈出栈.比方说,你想要求得某个结果,如果一步求解不出来,那么先把最后一步的计算步骤进栈,先不考 ...
- 设计模式的征途—17.模板方法(Template Method)模式
在现实生活中,很多事情都需要经过几个步骤才能完成,例如请客吃饭,无论吃什么,一般都包含:点单.吃东西.买单等几个步骤,通常情况下这几个步骤的次序是:点单=>吃东西=>买单.在这3个步骤中, ...
- Mysql访问权限问题:Access denied for user 'root'@'XXX' (using password: YES)
System.Data.Entity.Core.ProviderIncompatibleException: An error occurred accessing the database. Thi ...
- 关于bootstrap-datetimepicker 插件的配置参数详解
本人在网上查找的, 觉得还不错,就抄过来了... 有错误大家一起讨论,谢谢... 原地址是:http://www.bootcss.com/p/bootstrap-datetimepicker/ 项目 ...