Java中Vector和ArrayList的区别
来源:互联网 发布:盟拓软件 编辑:程序博客网 时间:2024/06/06 05:21
Vector
首先Vector和ArrayList实现了List接口。
Vector出现的版本是1.0,是一个线程安全的类,Vector在1.2之后拥有了ArrayList的所有功能,Vector拥有很多独有方法(ArrayList出现之前),下面列举几个:
void addElement(E obj) 将指定的组件添加到此向量的末尾,将其大小增加 1。 void setElementAt(E obj, int index) 将此向量指定 index 处的组件设置为指定的对象。 boolean removeElement(Object obj) 从此向量中移除变量的第一个(索引最小的)匹配项。 void removeElementAt(int index) 删除指定索引处的组件。
等等这些都是Vector对元素的操作,更多具体的请查看API。
Vector还拥有特有的迭代方法,直接上代码:
Enumeration<String> elements = vector.elements(); while(elements.hasMoreElements()){ String str=elements.nextElement(); }
ArrayList
ArrayList出现在1.2版本,ArrayList 是Vector 的替代类,重效率轻安全。
下面是ArrayList的一些方法(Vector在1.2之后已拥有):
boolean add(E e) 将指定的元素添加到此列表的尾部。 E set(int index, E element) 用指定的元素替代此列表中指定位置上的元素。 E remove(int index) 移除此列表中指定位置上的元素。
等等,还有ArrayList的迭代方式为(当然Vector也可用):
Iterator<Book> iterator=list.iterator(); while(iterator.hasNext()){ Book b=iterator.next(); } }
Vector和ArrayList的小结
相同点:
1. 底层都是使用数组实现。
2. 都是List的子类
不同点(主要关注):
1. 出现的版本不同,Vector 是1.0出现的。ArrayList是1.2出现的。
2. Vector 是一个线程安全的容器,对元素的操作效率相比ArrayList 要低。 ArrayList 是一个线程非安全的 。效率要更高一些。
3. Vector 类中包含了一些独有的对元素操作的方法。都是比较老的版本了。
4. 初始容量(调用空参数的构造器时)和扩容规则不同。
ArrayList的断点测试:
public static void main(String[] args) { List<String> list=new ArrayList<>(); list.add("1"); list.add("2"); list.add("3"); list.add("4"); list.add("5"); list.add("6"); list.add("7"); list.add("8"); list.add("9"); list.add("10"); list.add("11"); }
可见调用空参构造器时,ArrayList的初始容量为0,当添加第一个元素时,容量变为10,当超过10个元素时,容量变为原来的1.5倍(即10*1.5=15当然是取整)。
Vectord的断点测试:
public static void main(String[] args) { Vector<String> vector=new Vector<>(); vector.addElement("hello1"); vector.addElement("hello2"); vector.addElement("hello3"); vector.addElement("hello4"); vector.addElement("hello5"); vector.addElement("hello6"); vector.addElement("hello7"); vector.addElement("hello8"); vector.addElement("hello9"); vector.addElement("hello10"); vector.addElement("hello11"); }
可见Vector的初始容量为10(调用空参构造器),扩容规则为现有容量的2倍。
- Java中ArrayList和Vector的区别
- Java中Vector和ArrayList的区别
- Java中ArrayList和Vector的区别
- Java中Vector和ArrayList的区别
- Java中Vector和ArrayList的区别
- Java中Vector和ArrayList的区别
- Java中Vector和ArrayList的区别
- Java中Vector和ArrayList的区别
- java中vector 和 Arraylist的区别
- Java中Vector和ArrayList的区别
- Java中Vector和ArrayList的区别
- Java中Vector和ArrayList的区别
- Java中Vector和ArrayList的区别
- Java中Vector和ArrayList的区别
- Java中Vector和ArrayList的区别
- Java中Vector和ArrayList的区别
- Java中Vector和ArrayList的区别
- Java中Vector和ArrayList的区别
- window10安装nodejs出现2503,2502错误的解决方法
- 【二分图匹配入门专题1】A
- Mysql联表查询、查询近期某段时间内的数据等
- 设计模式——工厂方法模式
- 单向循环链表
- Java中Vector和ArrayList的区别
- HDU 1087
- android境外支付
- Java基础总结
- hpuoj【1391】矩阵A+B【数组】&&【水题】
- 这么多中小企业就被人遗忘了吗?
- build opencv hdf module 配置hdf5路径
- 《成功习惯养成,总结》
- html中的特殊字符