一、构造方法

Vector():构造一个空向量,使其内部数据数组的大小为 10,其标准容量增量为零。
Vector(int initialCapacity) :使用指定的初始容量和等于零的容量增量构造一个空向量
Vector(int initialCapacity, int capacityIncrement):使用指定的初始容量和容量增量构造一个空的向量
Vector(Collection<? extends E> c) :构造一个包含指定 collection 中的元素的向量,这些元素按其 collection 的迭代器返回元素的顺序排列。

  源码跟踪:

   1、先看无参的构造方法:

   2、有一个 int 参数的构造方法

 3、有两个 int参数的构造方法

 总结:

  从上面的三个方法中可以看出,如果调用无参的构造方法,默认初始化的长度为10的数组,默认增量为0。

     当使用一个参数时,可以为其指定初始化容量。

  当使用两个参数的方法时,不仅仅可以指定初始化容量,还可以指定增量。

二、常用方法

  1、add(E e) 方法

    源码跟踪(JDK1.8):

    源码跟踪(JDK1.9):

   总结

    当调用 add(E e) 方法时,会调用第二张图的 add 方法,其中会检验长度是否够,如果不够,会调用图三的 grow 方法,grow 方法中调用了图四的 newCapacity 扩容方法,如果你手动指定了capacityIncrement的值,那么可以按照你指定增量进行扩容。如果没有默认值为0,会扩容为原来的2倍。

  2、add(int index,Object e)方法

    源码跟踪(JDK1.8):

   源码跟踪(JDK1.9):

  总结:

    可以看出,当调用add(index,Object) 方法后,实际上是调用的 insert 方法,首先进行了index的校验,然后是数组长度的校验,然后进行数据的插入。

  3、remove(int index) 方法

    源码跟踪(JDK1.8):

  总结:根据索引删除一个元素,会先进行索引的校验,然后判断需要挪动的元素的个数;如果为0个,不需要执行操作,节省时间,如果不为0,再移动数组。

  4、remove(Object) 方法

    源码跟踪(JDK1.8):

  总结

    当根据一个元素值删除时,会先去查找该值所在的索引,如果能够找到,在根据索引进行删除。

  5、indexOf(Object obj) 与 indexOf(Object obj, int index) 方法

    源码跟踪(JDK1.8):

  总结

    查询元素位置时,对元素进行分情况讨论,① 是null;② 不是 null。然后进行查找,第二个参数为指定开始查找的索引,如果不指定,默认从0开始查找。

  6、set(int index, Object obj) 方法

    源码跟踪(JDK1.8):

  总结:

    根据索引赋值时,首先进行索引的校验,然后把新值填充到指定索引的位置。

最新文章

  1. 【BFS】HDU 1495
  2. 中文字体font-family常用列表
  3. 介绍对称加密算法,最常用的莫过于DES数据加密算法
  4. Django- 分页
  5. eclipse工程加入jquery.min.js报错:missing semicolon
  6. ActiveMQ(5.10.0) - Destination-level authorization
  7. Apache Options Indexes FollowSymLinks具体解释
  8. Funny String
  9. [cocos2dx笔记015]关于cocos2dx Button三种状态说明
  10. 客户端Webview重定向
  11. C#实现断点续传
  12. 数据结构Java实现04---树及其相关操作
  13. k8s中yaml文常见语法
  14. GatewayWorker
  15. Vue2.5开发去哪儿网App 城市列表开发之 兄弟组件间联动及列表性能优化
  16. Swift 实践篇之链式 UI 代码
  17. 用开源项目ExpandableTextView打造可以下拉扩展的TextView
  18. MySQL中的基本SQL语句
  19. Django开发问题及解决方法汇总
  20. Oracle OEM启动方法

热门文章

  1. Rocketmq原理&amp;最佳实践
  2. Celery详解(3)
  3. 201871010135-张玉晶《面向对象程序设计(java)》第十周学习总结
  4. sql注入知识点
  5. Socket是什么(一)
  6. JDOJ 2255 A+B Problem
  7. Linux性能优化实战学习笔记:第五讲
  8. K8s 集群安装(一)
  9. java web开发入门五(ssh整合)基于intellig idea
  10. c语言中static 函数和普通函数的区别