Java中Vector和ArrayList的区别

Vector

首先Vector和ArrayList实现了List接口。
Vector出现的版本是1.0,是一个线程安全的类,Vector在1.2之后拥有了ArrayList的所有功能,Vector拥有很多独有方法(ArrayList出现之前),下面列举几个:

void addElement(E obj) 
          将指定的组件添加到此向量的末尾,将其大小增加 1void 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倍。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值