Vector的特性以及和List的区别

Vector在java语言中是实现自动增长的对象数组,里面是用来存储对象的,这点和List,Set,Map有点相像。

package com.it.test;
import java.util.Vector;
/**
 * Created by lingmao on 2016/2/23.
 * Vector 主要是在多线程中的一个选择。
 */
public class test
{
    public static void main(String args[]){
        Vector vector=new Vector();
        /**
         * 将新的元素添加到末尾
         */
        vector.addElement("aaa");
        vector.addElement("bbb");
        vector.addElement("ccc");
        vector.addElement("ddd");
        vector.addElement("eee");
    for(int i=0;i<vector.size();i++)
    {
     System.out.println(vector.get(i));
    }
        //增删改查
        /**
         *将“www”插到下标为3的位子上,“ddd”和后面的元素相后移动
         */
        vector.insertElementAt("www", 3);
        /**
         * 将下边为4的元素替换为“zzz”
         */
        vector.setElementAt("zzz", 4);


        /**
         * 删除下标为2的元素,删除元素值为bbb的元素
         */
        vector.remove(2);
        vector.remove("bbb");
/**
 *        remove all the element
 */
//        vector.removeAll(vector);

    }
}

相关的方法:

同步是个很大的问题,尤其多线程,和进程中,因此,我们在多线程中同时对某个数组操作时,支持同步的vector无疑是个很好的选择,一般在需要将多个元素存在一个集合里的时候用。
java.util 类 Vector<E> 
boolean add(E o) 
将指定元素追加到此向量的末尾。 
void add(int index, E element) 
在此向量的指定位置插入指定的元素。 
boolean addAll(Collection<? extends E> c) 
将指定 Collection 中的所有元素追加到此向量的末尾,按照指定集合的迭代器所返回的顺序追加这些元素。 
boolean addAll(int index, Collection<? extends E> c) 
在指定位置将指定 Collection 中的所有元素插入到此向量中。 
void addElement(E obj) 
将指定的组件添加到此向量的末尾,将其大小增加 1。 
int capacity() 
返回此向量的当前容量。 
void clear() 
从此向量中移除所有元素。 
Object clone() 
返回向量的一个副本。 
boolean contains(Object elem) 
测试指定的对象是否为此向量中的组件。 
boolean containsAll(Collection<?> c) 
如果此向量包含指定 Collection 中的所有元素,则返回 true。 
void copyInto(Object[] anArray) 
将此向量的组件复制到指定的数组中。 
E elementAt(int index) 
返回指定索引处的组件。 
Enumeration<E> elements() 
返回此向量的组件的枚举。 
void ensureCapacity(int minCapacity) 
增加此向量的容量(如有必要),以确保其至少能够保存最小容量参数指定的组件数。 
boolean equals(Object o) 
比较指定对象与此向量的相等性。 
E firstElement() 
返回此向量的第一个组件(位于索引 0 处的项)。 
E get(int index) 
返回向量中指定位置的元素。 
int hashCode() 
返回此向量的哈希码值。 
int indexOf(Object elem) 
搜索给定参数的第一个匹配项,使用 equals 方法测试相等性。 
int indexOf(Object elem, int index) 
搜索给定参数的第一个匹配项,从 index 处开始搜索,并使用 equals 方法测试其相等性。 
void insertElementAt(E obj, int index) 
将指定对象作为此向量中的组件插入到指定的 index 处。 
boolean isEmpty() 
测试此向量是否不包含组件。 
E lastElement() 
返回此向量的最后一个组件。 
int lastIndexOf(Object elem) 
返回指定的对象在此向量中最后一个匹配项的索引。 
int lastIndexOf(Object elem, int index) 
向后搜索指定的对象,从指定的索引处开始搜索,并返回一个索引。 
E remove(int index) 
移除此向量中指定位置的元素。 
boolean remove(Object o) 
移除此向量中指定元素的第一个匹配项,如果向量不包含该元素,则元素保持不变。 
boolean removeAll(Collection<?> c) 
从此向量中移除包含在指定 Collection 中的所有元素。 
void removeAllElements() 
从此向量中移除全部组件,并将其大小设置为零。 
boolean removeElement(Object obj) 
从此向量中移除变量的第一个(索引最小的)匹配项。 
void removeElementAt(int index) 
删除指定索引处的组件。 
protected void removeRange(int fromIndex, int toIndex) 
从此 List 中移除其索引位于 fromIndex(包括)与 toIndex(不包括)之间的所有元素。 
boolean retainAll(Collection<?> c) 
在此向量中仅保留包含在指定 Collection 中的元素。 
E set(int index, E element) 
用指定的元素替换此向量中指定位置处的元素。 
void setElementAt(E obj, int index) 
将此向量指定 index 处的组件设置为指定的对象。 
void setSize(int newSize) 
设置此向量的大小。 
int size() 
返回此向量中的组件数。 
List<E> subList(int fromIndex, int toIndex) 
返回此 List 的部分视图,元素范围为从 fromIndex(包括)到 toIndex(不包括)。 
Object[] toArray() 
返回一个数组,包含此向量中以正确顺序存放的所有元素。 
<T> T[] 
toArray(T[] a) 
返回一个数组,包含此向量中以正确顺序存放的所有元素;返回数组的运行时类型为指定数组的类型。 
String toString() 
返回此向量的字符串表示形式,其中包含每个元素的 String 表示形式。 
void trimToSize() 
对此向量的容量进行微调,使其等于向量的当前大小。

vector为存储的对象分配一块连续的地址空间,因此对vector中的元素随机访问效率很高。在vecotor中插入或者删除某个元素,需要将现有元素进行复制,移动。如果vector中存储的对象很大,或者构造函数复杂,则在对现有元素进行拷贝时开销较大,因为拷贝对象要调用拷贝构造函数。对于简单的小对象,vector的效率优于list。vector在每次扩张容量的时候,将容量扩展2倍,这样对于小对象来说,效率是很高的。

list中的对象是离散存储的,随机访问某个元素需要遍历list。在list中插入元素,尤其是在首尾插入元素,效率很高,只需要改变元素的指针。还有就是Vector是线程同步的,List是线程不同步的。

综上所述:

vector适用:对象数量变化少,简单对象,随机访问元素频繁

list适用:对象数量变化大,对象复杂,插入和删除频繁



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值