精华内容
下载资源
问答
  • Vector和ArrayList区别

    2014-10-08 20:16:00
    Vector和ArrayList区别: 1、 2、 3.、 4、 5、 同步问题: public int indexOf(Object o) { return indexOf(o, 0); } /** * Returns the index of the first occurrence of the specified element in ...

    Vector和ArrayList区别:

    1、线程安全:Vector线程安全、ArrayList线程非安全;

    2、数据增长:Vector增长一倍、ArrayList增长1/2倍;

    3.、存储形式:Vector是通用容器-可变长度、ArrayList数组列表

    如果涉及到堆栈,队列等操作,应该考虑用Vector,
    对于需要快速插入,删除元素,应该使用LinkedList,
    如果需要快速随机访问元素,应该使用ArrayList。

    同步问题:

    Vector源码:

     public int indexOf(Object o) {
    	return indexOf(o, 0);
        }
    
        /**
         * Returns the index of the first occurrence of the specified element in
         * this vector, searching forwards from {@code index}, or returns -1 if
         * the element is not found.
         * More formally, returns the lowest index {@code i} such that
         * <tt>(i >= index && (o==null ? get(i)==null : o.equals(get(i))))</tt>,
         * or -1 if there is no such index.
         *
         * @param o element to search for
         * @param index index to start searching from
         * @return the index of the first occurrence of the element in
         *         this vector at position {@code index} or later in the vector;
         *         {@code -1} if the element is not found.
         * @throws IndexOutOfBoundsException if the specified index is negative
         * @see     Object#equals(Object)
         */
        public synchronized int indexOf(Object o, int index) {
    	if (o == null) {
    	    for (int i = index ; i < elementCount ; i++)
    		if (elementData[i]==null)
    		    return i;
    	} else {
    	    for (int i = index ; i < elementCount ; i++)
    		if (o.equals(elementData[i]))
    		    return i;
    	}
    	return -1;
        }
    <pre name="code" class="java">public synchronized E firstElement() {
    	if (elementCount == 0) {
    	    throw new NoSuchElementException();
    	}
    	return (E)elementData[0];
        }


    
    ArrayList源码:
    

    /**
         * Returns <tt>true</tt> if this list contains no elements.
         *
         * @return <tt>true</tt> if this list contains no elements
         */
        public boolean isEmpty() {
    	return size == 0;
        }
    /**
         * Returns the index of the first occurrence of the specified element
         * in this list, or -1 if this list does not contain the element.
         * More formally, returns the lowest index <tt>i</tt> such that
         * <tt>(o==null ? get(i)==null : o.equals(get(i)))</tt>,
         * or -1 if there is no such index.
         */
        public int indexOf(Object o) {
    	if (o == null) {
    	    for (int i = 0; i < size; i++)
    		if (elementData[i]==null)
    		    return i;
    	} else {
    	    for (int i = 0; i < size; i++)
    		if (o.equals(elementData[i]))
    		    return i;
    	}
    	return -1;
        }
    




    展开全文
  • vector和arraylist区别

    2019-10-20 20:08:15
    (1)Vector的方法都是同步的(Synchronized),是线程安全的(thread-safe),而ArrayList的方法不是,由于线程的同步必然要影响性能,因此,ArrayList的性能比Vector好。 (2)当VectorArrayList中的元素超过它的初始...

    1、Vector & ArrayList 

    (1)Vector的方法都是同步的(Synchronized),是线程安全的(thread-safe),而ArrayList的方法不是,由于线程的同步必然要影响性能,因此,ArrayList的性能比Vector好。 
    (2)当Vector或ArrayList中的元素超过它的初始大小时,Vector会将它的容量翻倍,而ArrayList只增加50%的大小,这样,ArrayList就有利于节约内存空间。

     

    2、Hashtable & HashMap 

    Hashtable和HashMap它们的性能方面的比较类似 Vector和ArrayList,比如Hashtable的方法是同步的,而HashMap的不是。

     

    3、ArrayList & LinkedList

    ArrayList的内部实现是基于内部数组Object[],所以从概念上讲,它更象数组,但LinkedList的内部实现是基于一组连接的记录,所以,它更象一个链表结构,所以,它们在性能上有很大的差别: 
           从上面的分析可知,在ArrayList的前面或中间插入数据时,你必须将其后的所有数据相应的后移,这样必然要花费较多时间,所以,当你的操作是在一列数据的后面添加数据而不是在前面或中间,并且需要随机地访问其中的元素时,使用ArrayList会提供比较好的性能; 而访问链表中的某个元素时,就必须从链表的一端开始沿着连接方向一个一个元素地去查找,直到找到所需的元素为止,所以,当你的操作是在一列数据的前面或中间添加或删除数据,并且按照顺序访问其中的元素时,就应该使用LinkedList了。 

     

    展开全文
  • Vector ArrayList 区别

    2018-06-27 14:20:57
    导致Vector效率无法和ArrayList相比; (2):ArrayList和Vector都采用线性连续存储空间,当存储空间不足的时候,ArrayList默认增加为原来的50%,Vector默认增加为原来的一倍; (3):Vector可以设置...
    (1):Vector是线程安全的,源码中有很多的synchronized可以看出,而ArrayList不是。导致Vector效率无法和ArrayList相比; 
    (2):ArrayList和Vector都采用线性连续存储空间,当存储空间不足的时候,ArrayList默认增加为原来的50%,Vector默认增加为原来的一倍; 
    (3):Vector可以设置capacityIncrement,而ArrayList不可以,从字面理解就是capacity容量,Increment增加,容量增长的参数。
    展开全文
  • 主要介绍了Java中的Vector和ArrayList区别及比较,本文从API、同步、数据增长、使用模式4个方面总结了它们之间的不同之处,需要的朋友可以参考下
  • 首先看这两类都实现List接口,而List接口一共有三个实现类,分别是ArrayListVector和LinkedList。List用于存放多个元素,能够维护元素的次序,并且允许元素的重复。3个具体实现类的相关区别如下:ArrayList是最...

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

    ArrayList是最常用的List实现类,内部是通过数组实现的,它允许对元素进行快速随机访问。数组的缺点是每个元素之间不能有间隔,当数组大小不满足时需要增加存储能力,就要讲已经有数组的数据复制到新的存储空间中。当从ArrayList的中间位置插入或者删除元素时,需要对数组进行复制、移动、代价比较高。因此,它适合随机查找和遍历,不适合插入和删除。

    Vector与ArrayList一样,也是通过数组实现的,不同的是它支持线程的同步,即某一时刻只有一个线程能够写Vector,避免多线程同时写而引起的不一致性,但实现同步需要很高的花费,因此,访问它比访问ArrayList慢。

    LinkedList是用链表结构存储数据的,很适合数据的动态插入和删除,随机访问和遍历速度比较慢。另外,他还提供了List接口中没有定义的方法,专门用于操作表头和表尾元素,可以当作堆栈、队列和双向队列使用。

    查看Java源代码,发现当数组的大小不够的时候,需要重新建立数组,然后将元素拷贝到新的数组内,ArrayList和Vector的扩展数组的大小不同。

    ArrayList中:

    48304ba5e6f9fe08f3fa1abda7d326ab.png

    1 public boolean add(E e) {

    2

    3 ensureCapacity(size + 1); // 增加元素,判断是否能够容纳。不能的话就要新建数组

    4

    5 elementData[size++] = e;

    6

    7 return true;

    8

    9 }

    10

    11  public void ensureCapacity(int minCapacity) {

    12

    13 modCount++;

    14

    15 int oldCapacity = elementData.length;

    16

    17 if (minCapacity > oldCapacity) {

    18

    19 Object oldData[] = elementData; // 此行没看出来用处,不知道开发者出于什么考虑

    20

    21 int newCapacity = (oldCapacity * 3)/2 + 1; // 增加新的数组的大小

    22

    23 if (newCapacity < minCapacity)

    24

    25 newCapacity = minCapacity;

    26

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

    28

    29 elementData = Arrays.copyOf(elementData, newCapacity);

    30

    31 }

    32

    33 }

    34

    35

    48304ba5e6f9fe08f3fa1abda7d326ab.png

    Vector中:

    48304ba5e6f9fe08f3fa1abda7d326ab.png

    1 private void ensureCapacityHelper(int minCapacity) {

    2

    3 int oldCapacity = elementData.length;

    4

    5 if (minCapacity > oldCapacity) {

    6

    7 Object[] oldData = elementData;

    8

    9 int newCapacity = (capacityIncrement > 0) ?

    10

    11 (oldCapacity + capacityIncrement) : (oldCapacity * 2);

    12

    13 if (newCapacity < minCapacity) {

    14

    15 newCapacity = minCapacity;

    16

    17 }

    18

    19 elementData = Arrays.copyOf(elementData, newCapacity);

    20

    21 }

    22

    23 }

    24

    25

    48304ba5e6f9fe08f3fa1abda7d326ab.png

    关于ArrayList和Vector区别如下:

    ArrayList在内存不够时默认是扩展50% + 1个,Vector是默认扩展1倍。

    Vector提供indexOf(obj, start)接口,ArrayList没有。

    Vector属于线程安全级别的,但是大多数情况下不使用Vector,因为线程安全需要更大的系统开销。

    展开全文
  • 相同点:1、ArrayList和Vector都是继承了相同的父类实现了相同的接口2、底层都是数组实现的3、初始默认长度都为10。不同点:1、同步性:Vector中的public方法多数添加了synchronized关键字,以确保方法同步,也即...
  • 转自:https://www.cnblogs.com/zhangzongle/p/5432212.htmlJava中Vector和ArrayList区别首先看这两类都实现List接口,而List接口一共有三个实现类,分别是ArrayList、Vector和LinkedList。List用于存放多个元素,...
  • Vector ArrayList 比较有时用Vector更好一点,有时用ArrayList更好一点,不能准确容易的给出答案,因为要视具体情况而定,有四个主要考虑的因素:1:API2: 同步(synchronization)3:数据增长(Data growth)4:...
  • Vector ArrayList 比较有时用Vector更好一点,有时用ArrayList更好一点,不能准确容易的给出答案,因为要视具体情况而定,有四个主要考虑的因素:1:API2: 同步(synchronization)3:数据增长(Data growth)4:...
  • ArrayListVector,LinkedList 都是集合Collection的实现类  2  Vector 里面的方法被 synchronized 修饰过 即是线程安全的 同步的。ArrayList没有 由此可知 性能略逊于  ArrayList; 3 扩容的大小不...
  • 1.vector线程同步且安全,arraylist线程异步且不安全 2.若大于容量,vector增长当前容量的100%,arraylist增长50%
  • Vector 类可以实现可增长的对象数组。与数组一样,它包含可以使用整数索引进行访问的组件。但是,Vector 的大小可以根据需要增大或缩小,以适应创建 Vector 后进行添加或移除项的操作。  Vector继承自...
  • Vector 还是ArrayList――哪一个更好,为什么?要回答这个问题不能一概而论,有时候使用Vector比较好;有时是ArrayList,有时候这两个都不是最好的选择。你别指望能够获得一个简单肯定答案,因为这要看你用它们干...
  • VectorArrayList区别

    2010-08-31 08:57:06
    Vector和ArrayList区别 Vector和ArrayList Vector和ArrayList在使用上非常相似,都可用来表示一组数量可变的对象应用的集合,并且可以随机地访问其中的元素。 Vector的方法都是同步的(Synchronized),是线程安全的...
  • Vector和ArrayList区别

    千次阅读 2016-05-17 21:37:28
    Vector和ArrayList区别  在使用上非常相似,都可用来表示一组数量可变的对象应用的集合,并且可以随机地访问其中的元素。  Vector的方法都是同步的(Synchronized),是线程安全的(thread-safe),而ArrayList...
  • 主要为大家详细介绍了Java中Vector和ArrayList区别,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 参考:Java中Vector和ArrayList区别
  • 浅谈Vector和ArrayList区别 联系 Vector与ArrayList本质上都是一个Object[] 数组,ArrayList提供了size属性,Vector提供了elementCount属性,他们的作用是记录集合内有效元素的个数。 与我们平常调用的arrayList....
  • Vector和ArrayList区别: 相同点:都实现了List接口,都是有序的,按照下标去取数据,可以重复存放数据。 不同点: (1)同步性 Vector是线程安全的,用synchronization实现线程安全,而ArrayList是线程不安全的,...
  • vector和arraylist

    2017-11-12 15:47:20
    vector和arraylist 区别vector 和 arrayList 都是对一段数组进行操作, 都继承了AbstractListvector 实现的都是线程安全的 public synchronized E get(int index) public synchronized E set(int index, E element)...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,956
精华内容 1,582
关键字:

vector和arraylist区别