JDK1.2---JDK1.8扩容

1.2:
   ArrayList:默认构造方法初始数组10个长度,扩容:(数组的长度 * 3)/2 + 1,元素满了以后扩容

           elementData = new Object[newCapacity];
         System.arraycopy(oldData, 0, elementData, 0, size);

   Vector:默认构造方法初始数组10个长度,扩容:(数组的长度*2),元素满了以后扩容

        elementData = new Object[newCapacity];
        System.arraycopy(oldData, 0, elementData, 0, elementCount);


   HashMap:默认构造方法数组[101]个长度,加载因子:0.75可以存null键值,put方法是前插
            扩容:元素个数达到尺度就扩容,扩容重新计算每个元素的的hash码。
                尺度:最新数组长度*0.75因子 
                数组长度:(数组长度*2+1)       
                Entry newMap[] = new Entry[newCapacity];

   Hashtable:默认构造方法数组[101]个长度,加载因子:0.75,不能存null值。put方法是前插
             扩容:元素个数达到尺度就扩容,扩容重新计算每个元素的的hash码。
                尺度:最新数组长度*0.75因子
                数组长度:数组长度* 2 + 1     
                Entry newMap[] = new Entry[newCapacity];
   LinkedList:调用add方法是前插,允许存null值

   HashSet:底层是一个HashMap实现,它的值使用了一个静态的Object对象。
   TreeSet:底层是一个TreeMap实现,它的值使用了一个静态的Object对象。

1.3:
   ArrayList:默认构造方法初始数组10个长度,扩容:(数组的长度 * 3)/2 + 1,元素满了以后扩容

           elementData = new Object[newCapacity];
         System.arraycopy(oldData, 0, elementData, 0, size);

   Vector:默认构造方法初始数组10个长度,扩容:(数组的长度*2)
        elementData = new Object[newCapacity];
        System.arraycopy(oldData, 0, elementData, 0, elementCount);


   HashMap:默认构造方法数组11个长度,加载因子:0.75,如果你存null键会给你一个Object对象,put方法是前插
            扩容:元素个数达到尺度就扩容,扩容重新计算每个元素的的hash码。
                尺度:最新数组长度 * 0.75 因子 
                数组长度:数组长度 * 2 + 1        
                Entry newMap[] = new Entry[newCapacity];

   Hashtable:默认构造方法数组11个长度,加载因子:0.75,不能存null值。put方法是前插
             扩容:元素个数达到尺度就扩容,扩容重新计算每个元素的的hash码
                尺度:最新数组长度 * 0.75因子
                数组长度:数组长度 * 2 + 1     倍数1倍
                Entry newMap[] = new Entry[newCapacity];
   LinkedList:调用add方法是前插,允许存null值

   HashSet:底层是一个HashMap实现,它的值使用了一个静态的Object对象。
   TreeSet:底层是一个TreeMap实现,它的值使用了一个静态的Object对象。

1.4:
   ArrayList:默认构造方法初始数组10个长度,扩容:(数组的长度 * 3)/2 + 1,元素满了以后扩容
        elementData = new Object[newCapacity];
        System.arraycopy(oldData, 0, elementData, 0, size);

   Vector:默认构造方法初始数组10个长度,扩容:(数组的长度*2)
        elementData = new Object[newCapacity];
        System.arraycopy(oldData, 0, elementData, 0, elementCount);


   HashMap:默认构造方法数组16个长度,加载因子:0.75,如果你存null键会给你一个Object对象,put方法是前插
            扩容:元素个数达到尺度就扩容,扩容重新计算每个元素的的hash码。
                尺度:    最新数组长度 * 0.75因子
                数组长度:数组长度 * 2    
                Entry[] newTable = new Entry[newCapacity];
   Hashtable:默认构造方法数组11个长度,加载因子:0.75,不能存null值。put方法是前插
             扩容:元素个数达到尺度就扩容,扩容重新计算每个元素的的hash码。
                尺度:最新数组长度 * 0.75 因子
                数组长度:数组长度 * 2 + 1  倍数1倍
                Entry newMap[] = new Entry[newCapacity];
   LinkedList:调用add方法是前插,允许存null值

   HashSet:底层是一个HashMap实现,它的值使用了一个静态的Object对象。
   TreeSet:底层是一个TreeMap实现,它的值使用了一个静态的Object对象。

1.5:
   ArrayList:默认构造方法初始数组10个长度,扩容:(数组的长度 * 3)/2 + 1,元素满了以后扩容
             封装了一个E[] elementData泛型数组
         elementData = (E[])new Object[newCapacity];
         System.arraycopy(oldData, 0, elementData, 0, size);
   Vector:默认构造方法初始数组10个长度,扩容:(数组的长度*2)
        elementData = new Object[newCapacity];
        System.arraycopy(oldData, 0, elementData, 0, elementCount);


   HashMap:默认构造方法数组16个长度,加载因子:0.75,put方法是前插
            Entry数组
            扩容:元素个数达到尺度就扩容,扩容重新计算每个元素的的hash码。
                尺度:    最新数组长度 * 0.75因子
                数组长度:数组长度 * 2 
                Entry[] newTable = new Entry[newCapacity];
   Hashtable:默认构造方法数组11个长度,加载因子:0.75,不能存null值。put方法是前插
             扩容:元素个数达到尺度就扩容,扩容重新计算每个元素的的hash码。
                尺度:最新数组长度*0.75因子
                数组长度:数组长度 * 2 + 1  
                Entry[] newTable = new Entry[newCapacity];
   LinkedList:调用add方法是前插,允许存null值
   HashSet:底层是一个HashMap实现,它的值使用了一个静态的Object对象。
   TreeSet:底层是一个TreeMap实现,它的值使用了一个静态的Object对象。

1.6:
   ArrayList:默认构造方法初始数组10个长度,扩容:(数组的长度 * 3)/2 + 1,元素满了以后扩容
             elementData = Arrays.copyOf(elementData, newCapacity);
   Vector:默认构造方法初始数组10个长度,扩容:(数组的长度*2)
             elementData = Arrays.copyOf(elementData, newCapacity);


   HashMap:默认构造方法数组16个长度,加载因子:0.75,put方法是前插
            Entry数组
            扩容:元素个数达到尺度就扩容,扩容重新计算每个元素的的hash码。
                尺度:    最新数组长度*0.75因子
                数组长度:数组长度 * 2 
                Entry[] newTable = new Entry[newCapacity];

     
   Hashtable:默认构造方法数组11个长度,加载因子:0.75,不能存null值。put方法是前插
             扩容:元素个数达到尺度就扩容,扩容重新计算每个元素的的hash码。
                尺度:最新数组长度  *0.75因子
                数组长度:数组长度 * 2 + 1  
                Entry[] newMap = new Entry[newCapacity];

   LinkedList:调用add方法是前插,允许存null值

   HashSet:底层是一个HashMap实现,它的值使用了一个静态的Object对象。
   TreeSet:底层是一个TreeMap实现,它的值使用了一个静态的Object对象。


1.7:
   ArrayList:默认构造方法初始数组10个长度,扩容:old数组长度 + (old数组长度 >> 1),元素满了以后扩容
            elementData = Arrays.copyOf(elementData, newCapacity);


   Vector:默认构造方法初始数组10个长度,扩容:(数组的长度+数组的长度)
          elementData = Arrays.copyOf(elementData, newCapacity);
         
   HashMap:默认构造方法数组16个长度,加载因子:0.75,put方法是前插
            扩容:容量达到尺度但是当前存储的元素的下标的链表头为空也不会扩容||。
                尺度:    最新数组长度 * 0.75因子
                数组长度:数组长度*2 
                Entry<K,V>[] newMap = new Entry[newCapacity];
                
     
   Hashtable:默认构造方法数组11个长度,加载因子:0.75,不能存null值。put方法是前插
             扩容:元素个数达到尺度就扩容,扩容重新计算每个元素的的hash码。
                尺度:最新数组长度 * 0.75因子
                数组长度:数组长度 * 2 + 1  
                Entry<K,V>[] newMap = new Entry[newCapacity];
                
                

   LinkedList:调用add方法是前插,允许存null值

   HashSet:底层是一个HashMap实现,它的值使用了一个静态的Object对象。
   TreeSet:底层是一个TreeMap实现,它的值使用了一个静态的Object对象。


1.8:
   ArrayList:默认构造方法初始数组0个长度,扩容:数组长度 * 1.5 ,添加第一个元素才扩充容量为(10) 元素满了以后扩容
             elementData = Arrays.copyOf(elementData, newCapacity);
   Vector:默认构造方法初始数组10个长度,扩容:(数组的长度 + 数组的长度)
             elementData = Arrays.copyOf(elementData, newCapacity);
         

   HashMap:
            调用默认初始化:初始了一个0.75加载因子,数组还是0个长度 ,添加第一个元素才扩充容量为(16)put后插
            扩容:如果hash表元素没有达到尺度但是某个桶的数量超过8个也会自动扩容,
                  一个桶超过了八个元素且数组的长度超过了64:会将这个桶变为树结构(红黑树)。
            尺度:数组的长度
                hash表的扩容:数组是数组长度 * 2,
                尺度:本身的尺度 * 2
                Node<K,V>[] newTab = (Node<K,V>[])new Node[newCap];
     
   Hashtable: 默认构造方法数组11个长度,加载因子:0.75,不能存null值。put方法是前插
              扩容:元素个数达到尺度就扩容,扩容重新计算每个元素的的hash码。
              尺度:数组的长度
                  hash表的扩容:数组是数组长度 * 2 + 1,
                  尺度:new新数组的长度 * 0.75
                  Entry<K,V> e = (Entry<K,V>) tab[index];
   LinkedList:调用add方法是前插,允许存null值
   HashSet:底层是一个HashMap实现,它的值使用了一个静态的Object对象。
   TreeSet:底层是一个TreeMap实现,它的值使用了一个静态的Object对象。
 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值