0
点赞
收藏
分享

微信扫一扫

vector底层源码分析-----集合章节(二)

蚁族的乐土 2022-05-05 阅读 40
java

vector底层源码分析

package vector底层源码分析;

import java.util.Vector;

/**
 * test
 *
 * @author: huanghao
 * @createTime: 2022/05/04 23:33
 * @description: vector 底层源码
 */
@SuppressWarnings({"all"})
public class VectorSource {
    public static void main(String[] args) {
        //无参构造
        Vector vector = new Vector();
//        Vector vector = new Vector(8);
        for (int i = 0; i < 10; i++) {
            vector.add(i);
        }
        vector.add(100);
        System.out.println(vector);
        /*
        1. new Vector(); 底层
            public Vector() {
                this(10);
            }
       //有参构造  Vector vector = new Vector(8);

        //走的方法是:
        public Vector(int initialCapacity) {
                this(initialCapacity, 0);
            }
        2.vector.add(i)
        2.1 下面这个方法执行添加数据到vector集合
        public synchronized boolean add(E e) {
            modCount++;
            ensureCapacityHelper(elementCount + 1);
            elementData[elementCount++] = e;
            return true;
        }
        2.2 判断是否需要扩容 条件:minCapacity - elementData.length > 0
        private void ensureCapacityHelper(int minCapacity) {
            // overflow-conscious code
            if (minCapacity - elementData.length > 0)
                grow(minCapacity);
        }
        2.3 如果需要的数组大小不够用 就扩容,扩容的算法
        //就是扩容两倍
        // int newCapacity = oldCapacity + ((capacityIncrement > 0) ?capacityIncrement : oldCapacity);
        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 条评论