Java中的Vector容器怎么用
导读:本文共12992.5字符,通常情况下阅读需要43分钟。同时您也可以点击右侧朗读,来听本文内容。按键盘←(左) →(右) 方向键可以翻页。
摘要: 一、前言知识补充:Arrays.copyOf函数:publicstaticint[]copyOf(int[]original,intnewLength){int[]copy=newint[newLength];System.arraycopy(original,0,copy,0,Math.min(original.length,newLength));r... ...
目录
(为您整理了一些要点),点击可以直达。知识补充:Arrays.copyOf函数:
可见copyOf()在内部新建一个数组,调用arrayCopy()将original内容复制到copy中去,并且长度为newLength。返回copy;
继续看一下System.arraycopy函数:
src - 源数组。
srcPos - 源数组中的起始位置。
dest - 目标数组。
destPos - 目标数据中的起始位置。
length - 要复制的数组元素的数量。
该方法是用了native关键字,调用的为C++编写的底层函数,可见其为JDK中的底层函数。
Vector类实现了一个可增长的对象数组,内部是以动态数组的形式来存储数据的。
Vector具有数组所具有的特性、通过索引支持随机访问、所以通过随机访问Vector中的元素效率非常高、但是执行插入、删除时效率比较低下。
继承了AbstractList,此类提供 List 接口的骨干实现,以最大限度地减少实现”随机访问”数据存储(如数组)支持的该接口所需的工作.对于连续的访问数据(如链表),应优先使用 AbstractSequentialList,而不是此类.
实现了List接口,意味着Vector元素是有序的,可以重复的,可以有null元素的集合.
实现了RandomAccess接口标识着其支持随机快速访问,实际上,我们查看RandomAccess源码可以看到,其实里面什么都没有定义.因为ArrayList底层是数组,那么随机快速访问是理所当然的,访问速度O(1).
实现了Cloneable接口,标识着可以它可以被复制.注意,ArrayList里面的clone()复制其实是浅复制
实现了Serializable 标识着集合可被序列化。
Vector实际上是通过一个数组去保存数据的。当我们构造Vecotr时;若使用默认构造函数,则Vector的默认容量大小是10。
当Vector容量不足以容纳全部元素时,Vector的容量会增加。若容量增加系数 >0,则将容量的值增加“容量增加系数”;否则,将容量大小增加一倍。
Vector的克隆函数,即是将全部元素克隆到一个数组中。
1. 随机访问遍历,通过索引值去遍历
由于Vector实现了RandomAccess接口,它支持通过索引值去随机访问元素。
2. 通过迭代器遍历。即通过Iterator去遍历
3. 通过增强for循环去遍历
4. 通过Enumeration遍历
测试这些遍历方式效率的代码如下:
输出如下:
iteratorThroughRandomAccess:3 ms
iteratorThroughIterator:6 ms
iteratorThroughFor2:5 ms
iteratorThroughEnumeration:5 ms
所以:遍历Vector,使用索引的随机访问方式最快,使用迭代器最慢。
Java中的Vector容器怎么用的详细内容,希望对您有所帮助,信息来源于网络。