Java集合简介与vector



/*
*作者:呆萌老师
*☑csdn认证讲师
*☑51cto高级讲师
*☑腾讯课堂认证讲师
*☑网易云课堂认证讲师
*☑华为开发者学堂认证讲师
*☑爱奇艺千人名师计划成员
*在这里给大家分享技术、知识和生活
*各种干货,记得关注哦!
*vx:it_daimeng
*/



1、什么是集合框架


集合我们又常称集合框架。集合与数组都是对多个数据进行存储操作的结构,也是JAVA当中的容器。JAVA集合就像一种容器,可以动态地把多个对象的引用放入容器中。在开发中我们以数据结构为载体,以对象值的固定为目标,对集合展开研究。


2、集合框架的结构


Java集合简介与vector


3、什么是Vector


vector又称向量,是一种古老的存储方式,其底层实现是由不可变动的数组实现。不可变是指存储空间地址不可更改且存储空间连续。


又因为vector大量使用了synchronized关键字去修饰操作方法,从而使得其为线程安全的,相对应的操作效率大大降低,又因为其扩容机制是每次扩容2倍,相比较于ArrayList的1.5倍扩容而言,申请的空间又过多,因此,到目前渐渐地被ArrayList替代。


Java集合简介与vector


4、vector扩容因子


 protected int capacityIncrement;



5、扩容源码


vector扩容每一次是以两倍扩容。


 private static final int MAX_ARRAY_SIZE = Integer.MAX_VALUE - 8;

    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);
    }

    private static int hugeCapacity(int minCapacity) {
        if (minCapacity < 0) // overflow
            throw new OutOfMemoryError();
        return (minCapacity > MAX_ARRAY_SIZE) ?
            Integer.MAX_VALUE :
            MAX_ARRAY_SIZE;
    }



6、vector特点


1、查询快


由于vector底层是由一个数组构成,因此其查询相对而言较快。


2、线程安全


7、vector使用


import java.util.ArrayList;
import java.util.Arrays;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.Vector;
 
public class ArrayListExample {
 public static void main(String[] args) 
  {
 //Vector
    Vector vector = new Vector<>(Arrays.asList("A","B","C"));
 
    Enumeration vectorEnums = vector.elements();
 
 while(vectorEnums.hasMoreElements()) {
      String value = vectorEnums.nextElement();
 if("B".equals(value)) {
        vector.add("D");
      }
      System.out.println(value);
    }
 
  

  }
}


发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章