zoukankan      html  css  js  c++  java
  • java集合框架


    集合框架
    1.存储基本类型,在Java中要是用包装类型
    ArrayList<Integer> list=new ArrayList<Integer>();
    2.非泛型集合,可以添加任意类型

    ArrayList list=new ArrayList();
    list.add(1);//装箱  程序性能降低  
    list.add("面试");

    1.泛型不用装箱
    2.泛型可以保证类型安全
    ----------------------------------------------------------
    如果这种    个性    是     个别   的话,我宁可不要

    2.集合扩容的原理
    以数组实现。节约空间,但数组有容量限制。超出限制时会增加50%容量,
    用System.arraycopy()复制到新的数组。因此最好能给出数组大小的预估值。
    默认第一次插入元素时创建大小为10的数组。
     /**
         * Default initial(初始化) capacity(容量).
         */
        private static final int DEFAULT_CAPACITY = 10;
        
     /**
         * Constructs an empty list with an initial capacity of ten.
         */
        public ArrayList() {
            this.elementData = DEFAULTCAPACITY_EMPTY_ELEMENTDATA;

    定义一个集合,默认会初始化10个位置,但是元素个数为0 ,JDK1.6 和JDK 8

    扩容的过程
    1.add方法是时机
    public boolean add(E e) {
    ensureCapacityInternal(size + 1); // Increments modCount!!
    elementData[size++] = e;
    return true;
    }
    ------第一行code
    private void ensureCapacityInternal(int minCapacity) {
    if (elementData == DEFAULTCAPACITY_EMPTY_ELEMENTDATA) {
    minCapacity = Math.max(DEFAULT_CAPACITY, minCapacity);
    }

    ensureExplicitCapacity(minCapacity);
    }

    -----goon

    private void ensureExplicitCapacity(int minCapacity) {
    modCount++;

    // overflow-conscious code
    if (minCapacity - elementData.length > 0)
    grow(minCapacity);
    }
    last goes to grow

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

  • 相关阅读:
    团队开发5
    团队开发4
    团队开发3
    团队开发2
    团队开发1
    团队计划会议
    寒假学习进度---完结篇
    寒假学习进度十七
    寒假学习进度十六
    python后续学习
  • 原文地址:https://www.cnblogs.com/1287758807cjh/p/8540495.html
Copyright © 2011-2022 走看看