精华内容
下载资源
问答
  • ArrayList和Vector的区别相同点:1、ArrayList和Vector都是继承了相同父类实现了相同接口2、底层都是数组实现3、初始默认长度都为10。不同点:1、同步性:Vectorpublic方法多数添加了synchronized关键字...

    ArrayList和Vector的区别

    相同点:

    1、ArrayList和Vector都是继承了相同的父类和实现了相同的接口

    2、底层都是数组实现的

    3、初始默认长度都为10。

    不同点:

    1、同步性:

    Vector中的public方法多数添加了synchronized关键字,以确保方法同步,也即是Vector线程安全,ArrayList线程不安全。

    2、扩容不同

    内部属性不同,这可能是导致扩容方式不同的原因所在。

    ArrayList有两个属性,存储数据的数组elementData,和存储记录数目的size。

    Vector有三个属性,存储数据的数组elementData,存储记录数目的elementCount,还有扩展数组大小的扩展因子capacityIncrement。

    ArrayList的扩展方法

    //jdk1.8.0_91

    private void grow(int minCapacity) {

    // overflow-conscious code

    int oldCapacity = elementData.length;

    int newCapacity = oldCapacity + (oldCapacity >> 1);

    if (newCapacity - minCapacity < 0)

    newCapacity = minCapacity;

    if (newCapacity - MAX_ARRAY_SIZE > 0)

    newCapacity = hugeCapacity(minCapacity);

    // minCapacity is usually close to size, so this is a win:

    elementData = Arrays.copyOf(elementData, newCapacity);

    }

    可以看出,在满足扩容条件时,扩展后数组大小为原数组长度的1.5倍与传递参数中较大者

    Vector的扩展方法

    //jdk1.8.0_91

    private void grow(int minCapacity) {

    // overflow-conscious code

    int oldCapacity = elementData.length;

    int newCapacity = oldCapacity + ((capacityIncrement > 0) ?

    capacityIncrement : oldCapacity);

    if (newCapacity - minCapacity < 0)

    newCapacity = minCapacity;

    if (newCapacity - MAX_ARRAY_SIZE > 0)

    newCapacity = hugeCapacity(minCapacity);

    elementData = Arrays.copyOf(elementData, newCapacity);

    }

    可以看出,当扩容因子大于0时,新数组长度为原数组长度+扩容因子,否则子新数组长度为原数组长度的2倍。 将上面生成的新数组长度与传递的参数长度作比较,较大者为最终的新长度。

    感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

    展开全文
  • c++中vectorlist的区别

    2017-03-27 16:32:34
    c++标准库中,容器vector和list都可以用来存放一组类型相同的数据。而且二者不同于数组一点是,支持动态增长。但它们还是有有几不同 (1) vector是顺序表,表示是一块连续内存,元素被顺序存储;list是...

    c++标准库中,容器vector和list都可以用来存放一组类型相同的数据。而且二者不同于数组的一点是,支持动态增长。但它们还是有有几点不同

    (1)  vector是顺序表,表示的是一块连续的内存,元素被顺序存储;list是双向连接表,在内存中不一定连续。

    (2)当数值内存不够时,vector会重新申请一块足够大的连续内存,把原来的数据拷贝到新的内存里面;list因为不用考虑内存的连续,因此新增开销比vector小。

    (3)list只能通过指针访问元素,随机访问元素的效率特别低,在需要频繁随机存取元素时,使用vector更加合适。

    (4)当向vector插入或者删除一个元素时,需要复制移动待插入元素右边的所有元素;因此在有频繁插入删除操作时,使用list更加合适。

    展开全文
  • c++中list和vector的区别

    2013-09-24 17:57:24
    c++标准库中,容器vector和list都可以用来存放一组类型相同的数据。而且二者不同于数组一点是,支持动态增长。 但它们还是有有几不同: (1) vector是顺序表,表示是一块连续内存,元素被顺序存储;...

    c++标准库中,容器vector和list都可以用来存放一组类型相同的数据。而且二者不同于数组的一点是,支持动态增长。

    但它们还是有有几点不同:

    (1)  vector是顺序表,表示的是一块连续的内存,元素被顺序存储;

              list是双向连接表,在内存中不一定连续。

    (2)当数值内存不够时,vector会重新申请一块足够大的连续内存,把原来的数据拷贝到新的内存里面;

                                            list因为不用考虑内存的连续,因此新增开销比vector小。

    (3)list只能通过指针访问元素,随机访问元素的效率特别低,在需要频繁随机存取元素时,使用vector更加合适。

    (4)当向vector插入或者删除一个元素时,需要复制移动待插入元素右边的所有元素;因此在有频繁插入删除操作时,使用list更加合适。

    展开全文
  • ArrayList、Vector和LinkedList类相同点:都在java.util包中;都是可伸缩数组,即可以动态改变长度数组;都是List接口实现类,(List中)元素存放有序,可重复;不同点:ArrayList和Vector底层是使用数组实现...

    ArrayList、Vector和LinkedList类

    相同点:

    1. 都在java.util包中;
    2. 都是可伸缩数组,即可以动态改变长度的数组;
    3. 都是List接口的实现类,(List中)元素存放有序,可重复;

    不同点:

    1. ArrayList和Vector底层是使用数组实现的;LinkedList底层使用双向循环链表数据结构实现;
    2. ArrayList和Vector索引数据速度快,增删元素速度慢;LinkedList增删元素速度快,索引速度慢;
    3. Vector是线程安全的,ArrayList和LinkedList线程不安全;
    4. ArrayList和Vector都有一个初始化的容量大小,默认为10,存储元素个数超过初始容量时,ArrayList默认扩充为原来的1.5倍+1,Vector默认扩充为原来的2倍;LinkedList更节省空间。

    ArrayList类的声明

    public class ArrayList<E> extends AbstractList<E>
            implements List<E>, RandomAccess, Cloneable, java.io.Serializable
    {
    ……
    }

    Vector类的声明

    public class Vector<E>
        extends AbstractList<E>
        implements List<E>, RandomAccess, Cloneable, java.io.Serializable
    {
    ……
    }

    LinkedList类的声明

    public class LinkedList<E>
        extends AbstractSequentialList<E>
        implements List<E>, Deque<E>, Cloneable, java.io.Serializable
    {
    ……
    }

    使用场合

    1. 当数据的主要操作为索引或只在集合的末端增加、删除元素,使用ArrayList或Vector效率比较高;
    2. 当对数据的操作主要以指定位置的插入或删除操作,使用LinkedList效率比较高;
    3. 当在多线程中使用容器时,选用Vector较为安全。

    展开全文
  • 集合类分为两个分支,Collection与Map,其中Collection接口继承了Iterator接口,继承Iterator接口类可以使用迭代器遍历元素(即Collection接口类都可以使用),今天我们从相同点、不同点、以及JDK源码等各个方面来...
  • 换而言之他们三个就是具有List特征的集合,List集合的特点就是他们三个的相同点。 我们通过查询API可以的到List接口的描述: 有序的 collection(也称为序列)。此接口的用户可以对列表中每个元素的插入位置进行...
  • 相同点: 1)他们都是线程不安全,只在单线程下适合使用. arrayList在多线程环境下可以考虑使用.Collections.synchronizedList(list)函数返回一个线程安全ArrayList类.也可以使用concurrent并发包下...
  • 相同点:都实现了List接口,都是有序,按照下标去取数据,可以重复存放数据。 不同点: (1)同步性 Vector是线程安全,用synchronization实现线程安全,而ArrayList是线程不安全,但如果只有一个线程访问到...
  • Vector和ArrayList区别

    2014-04-01 23:05:03
    相同点: 都实现了List接口,都是有序,可以按照下标去取数据,可以存放重复数据。 不同点: (1)线程安全性 Vector是线程安全,在写多线程并发时可以考虑使用Vector。 ArrayList不是线程安全,速度相对...
  • ArrayList和Vector的比较

    2021-03-23 15:58:33
    相同点: 两者都实现了List接口,底层都是数组实现 不同点: ArrayList是线程不安全Vector是线程安全Vector关键方法都有synchronized修饰符修饰,导致使用效率较差。 扩容方面:ArrayList扩容为原来1.5...
  • 相同点: ArrayList和Vector都实现于List接口 不同点: 1.线程安全行不同 ArrayListadd方法没有加Sychronized关键字,是线程不安全Vector类是线程安全类 2.数组扩容方式不同 ArrayList有两个属性,分别...
  • 相同点: 都是java.util.List接口实现类 都是有序、可排序、可重复集合 都支持迭代器操作 区别: 1、实现接口不同 ArrayList和Vector未实现Queue接口、Deque接口、不支持队列操作 LinkedList实现了Queue接口...
  • Vector和ArrayList异同

    2018-05-23 21:05:33
    首先我们来看看Vector和ArrayList的相同点:这两个类都实现了List接口(List接口继承了Collection接口),他们都是有序集合,即存储在这两个集合中的元素的位置都是有顺序的,相当于一种动态的数组,我们以后可以按...
  • ArrayList和Vector的区别

    2017-08-12 09:52:31
    相同点:都实现了List接口、都为有序集合,既存储在这两个集合中元素位置都是有序,相当于动态数组,可按位置索引取出,数据允许重复,这点与Set集合不同。 区别: 1.同步性: Vector线程安全,ArrayList...
  • ArrayList 和Vector的比较

    2018-06-21 15:50:19
    1.公共继承自相同的类,实现相同的接口public class Vector&lt;E&gt; extends AbstractList&lt;E&gt; implements List&lt;E&gt;, RandomAccess, Cloneable, java.io.Serializablepublic ...
  • ArrayList和Vector区别

    2019-03-01 18:17:47
    ArrayList和Vector区别 collection集合 ├List │├LinkedList │├ArrayList ...1、ArrayList和Vector都是继承了相同的父类(AbstractList )实现了相同的接口(List)。 2、底层都是数组(Obj...
  • Vector、ArrayListLinkedList都是List的接口的实现类,所以它们三个都有List集合身上的特点 List是有序的,元素可重复的集合。请注意这里的有序指的是元素存入集合的顺序取出的顺序一致。 ArrayList和Vector都是...
  • 相同点Vector、ArrayListLinkedList都是List的接口的实现类,所以它们三个都有List集合身上的特点 List是有序的,元素可重复的集合。请注意这里的有序指的是元素存入集合的顺序取出的顺序一致。 ArrayList...
  • 1.相同点Arraylist和Vector都是List集合实现类,其相同点可以说是List集合特点,换而言之,其特点可以总结为他们都是有序,元素可重复集合.有序指是元素存入与输出顺序一致,也就是先进先出;2.不同点...
  • ArrayList和Vector的共同是底层都是数组实现,查询快,增删慢。不同是前者是线程不安全,效率高,后者是线程安全,效率低。 LinkedList前面两个区别是底层是链表实现,查询慢,增删快。ArrayList...
  • c++标准库中,容器vector和list都可以用来存放一组类型相同的数据。而且二者不同于数组一点是,支持动态增长。但它们还是有有几不同 (1) vector是顺序表,表示是一块连续内存,元素被顺序存储;list是...
  • ArrayListLinkedList、Vector的区别

    千次阅读 2020-07-25 17:30:20
    (1)相同点: LinkedeListArrayList都实现了List接口。 ArrayListLinkedList是两个集合类,用于存储一系列对象引用(references)。 (2)不同点: ArrayList底层实现数组,而LinkedList是双向链表。 ...
  • 相同点: 1.都实现了List接口(List接口继承自Collection接口) 2.有序集合,数据可重复,可按索引号取值(而HashSet无序,不可重复)   不同点: 1.Vector是线程安全,而ArrayList是线程不安全,因此单...
  • 相同点: 1.都实现了List接口(List接口继承自Collection接口) 2.有序集合,数据可重复,可按索引号取值(而HashSet无序,不可重复) 不同点: 1.Vector是线程安全,而ArrayList是线程不安全,因此单线程...

空空如也

空空如也

1 2 3 4 5 6
收藏数 115
精华内容 46
关键字:

vector和list的相同点