zoukankan      html  css  js  c++  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);
        }

    3.集合框架
    Collection
    Collctionns


    Collection  不唯一  无序

    List     不唯一  有序

    Set    唯一  无序

    3.集合常用方法
      add() 添加
      add(index,Object) 在特定位置添加元素
      size()集合中元素总数
      get(i) 返回i位置的对象
      contains(Object)
      remove(Object)
      remove(int index)

  • 相关阅读:
    UVa 1451 Average (斜率优化)
    POJ 1160 Post Office (四边形不等式优化DP)
    HDU 3507 Print Article (斜率DP)
    LightOJ 1427 Substring Frequency (II) (AC自动机)
    UVa 10245 The Closest Pair Problem (分治)
    POJ 1741 Tree (树分治)
    HDU 3487 Play with Chain (Splay)
    POJ 2828 Buy Tickets (线段树)
    HDU 3723 Delta Wave (高精度+calelan数)
    UVa 1625 Color Length (DP)
  • 原文地址:https://www.cnblogs.com/fkx1/p/8540741.html
Copyright © 2011-2022 走看看