你的位置:首页 > Java教程

[Java教程]Java中Vector和ArrayList的区别


首先看这两类都实现List接口,而List接口一共有三个实现类,分别是ArrayList、Vector和LinkedList。List用于存放多个元素,能够维护元素的次序,并且允许元素的重复。3个具体实现类的相关区别如下:

  1. ArrayList是最常用的List实现类,内部是通过数组实现的,它允许对元素进行快速随机访问。数组的缺点是每个元素之间不能有间隔,当数组大小不满足时需要增加存储能力,就要讲已经有数组的数据复制到新的存储空间中。当从ArrayList的中间位置插入或者删除元素时,需要对数组进行复制、移动、代价比较高。因此,它适合随机查找和遍历,不适合插入和删除。
  2. Vector与ArrayList一样,也是通过数组实现的,不同的是它支持线程的同步,即某一时刻只有一个线程能够写Vector,避免多线程同时写而引起的不一致性,但实现同步需要很高的花费,因此,访问它比访问ArrayList慢。
  3. LinkedList是用链表结构存储数据的,很适合数据的动态插入和删除,随机访问和遍历速度比较慢。另外,他还提供了List接口中没有定义的方法,专门用于操作表头和表尾元素,可以当作堆栈、队列和双向队列使用。
  4. vector是线程(Thread)同步(Synchronized)的,所以它也是线程安全的,而Arraylist是线程异步(ASynchronized)的,是不安全的。如果不考虑到线程的安全因素,一般用Arraylist效率比较高。
  5. 如果集合中的元素的数目大于目前集合数组的长度时,vector增长率为目前数组长度的100%,而arraylist增长率为目前数组长度
    的50%.如过在集合中使用数据量比较大的数据,用vector有一定的优势。

  6. 如果查找一个指定位置的数据,vector和arraylist使用的时间是相同的,都是0(1),这个时候使用vector和arraylist都可以。而
    如果移动一个指定位置的数据花费的时间为0(n-i)n为总长度,这个时候就应该考虑到使用Linkedlist,因为它移动一个指定位置的数据
    所花费的时间为0(1),而查询一个指定位置的数据时花费的时间为0(i)。
    ArrayList 和Vector是采用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,
    都允许直接序号索引元素,但是插入数据要设计到数组元素移动 等内存操作,所以索引数据快插入数据慢,
    Vector由于使用了synchronized方法(线程安全)所以性能上比ArrayList要差
    ,LinkedList使用双向链表实现存储,按序号索引数据需要进行向前或向后遍历,但是插入数据时只需要记录本项的前后项即可,所以插入数度较快!

  7. 笼统来说:LinkedList:增删改快
                  ArrayList:查询快(有索引的存在)




什么时候去邮轮旅游最便宜去邮轮旅游跟团要多少钱去邮轮旅游需要多少钱邮轮旅游大概多少钱到邮轮旅游要花多少钱中秋节到九道谷漂流有什么优惠活动?佛山三水九道谷漂流优惠政策? 2015九道谷漂流中秋节活动?佛山九道谷漂流中秋节门票多少钱? 怡情谷响水漂流安全吗?惠州怡情谷响水漂流刺激吗? 雷公峡优惠漂流票怎么买?惠州雷公峡漂流预订什么价格? 2015第十六届中国沈阳国际冰雪节开幕 2015年春节高速免费通行时间 台湾旅游特产介绍,台湾有哪些土特产,台湾土特产有什么 首届银川滨河冰雪彩灯艺术节25日开幕 香港有哪些24小时营业的综合性商场? 十一长假想去深圳,广州,澳门,香港去各玩一天,求路线? 去香港旅游除了购物以外,有什么可以玩的? 澳门威尼斯人酒店几点入住,几点退房,有机会申请延迟退房吗? 香格里拉藏民家喝茶必懂的事项有哪些? 圣诞去厦门湖里公园好玩吗? 2015香格里拉藏民家喝酒必须的注意什么事项? 厦门湖里公园自驾游怎去? 561-5401-100F Datasheet 561-5401-100F Datasheet 561-5501-050 Datasheet 561-5501-050 Datasheet 561-5501-050F Datasheet 561-5501-050F Datasheet 去惠州跟团旅游 去惠州跟团旅游 去惠州跟团旅游 深圳至惠州二天游 深圳至惠州二天游 深圳至惠州二天游 深圳到南昆山三天游 深圳到南昆山三天游 深圳到南昆山三天游