5 Vector和ArrayList异同

Vector 

Vector类在java中可以实现自动增长的对象数组;vector在C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类函数库

基本介绍:

矢量、媒介、载体。

(1)矢量:具有方向性的量。

(2) 编程语言方面:vector是C++标准模板库中的部分内容,中文偶尔译作“容器”,但并不准确。它是一个多功能的,能够操作多种数据结构和算法的模板类函数库。vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。

简单的使用方法如下:

vector test;//建立一个vector

test.push_back(1);

test.push_back(2);//把1和2压入vector 这样test[0]就是1,test[1]就是2

我们可以用一个迭代器

vector :: iterator iter=test.begin();//定义一个可以迭代int型vector的迭代器iter,它指向test的首位

for(;iter!=test.end();iter++) cout<<(*iter);//iter++指的是向后迭代一位,直到iter到超出末端迭代器为止,输出迭代器指向的值

ArrayList


List 接口的大小可变 数组的实现,位于API文档的 java.util.ArrayList<E>。实现了所有可选列表操作,并允许包括 null 在内的所有 元素。除了实现 List 接口外,此类还提供一些方法来操作内部用来存储列表的 数组的大小。(此类大致上等同于 Vector 类,除了此类是不同步的。)

每个 ArrayList 实例都有一个容量。该容量是指用来存储列表 元素的 数组的大小。它总是至少等于列表的大小。随着向 ArrayList 中不断添加 元素,其容量也自动增长。并未指定增长策略的细节,因为这不只是添加 元素会带来分摊固定时间开销那样简单

相同点:

   一:都实现了List接口。

   二:都是通过数组实现的。

   三:数组进行复制、移动、代价比较高。因此,它适合随机查找和遍历,不适合插入和删除。

   四:都可用来表示一组数量可变的对象应用的集合

不同点:

1 :Vector的方法都是同步的(Synchronized),是线程安全的(thread-safe),而ArrayList的方法不是,由于线程的同步必然要影响性能,因此,ArrayList的性能比Vector好。

2:当Vector或ArrayList中的元素超过它的初始大小时,Vector会将它的容量翻倍,而ArrayList只增加50%的大小,因此,ArrayList的性能比Vector好。

3:arraylist 属于线程不安全(线程不同步)即当多线程进行对arraylist集合的操作时,有可能对数据进行不正确的操作。

        vector是线程安全的(线程同步) 即当在同一时刻只能有一个线程进行对vector集合的操作,但是vector要做到线程同步,

       需要大量的花费,可能是消耗大量的内存或者cpu。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值