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

    1.集合框架包含的内容,

    Collection  不唯一  无序

    List     不唯一  有序

    Set    唯一  无序

    6.集合常用方法
      add() 添加

      add(index,Object) 在特定位置添加元素

      size()集合中元素总数

      get(i) 返回i位置的对象

      contains(Object)

      remove(Object)

      remove(int index)

    3.ArrarList和lLinkedList

    ArrayList实现了长度可变的数组,在内存中分配连续的空间。遍历元素和随机访问元素的效率比较高

    LinkedList在更新,删除时效率会更高,

    void  addFirst(Object o)

    在列表的首部添加元素

    void  addLast(Object o)

    在列表的末尾添加元素

    Object  getFirst()

    返回列表中的第一个元素

    Object  getLast()

    返回列表中的最后一个元素

    Object  removeFirst()

    删除并返回列表中的第一个元素

    Object  removeLast()

    删除并返回列表中的最后一个元素

    (1)集合扩容的原理
    以数组实现。节约空间,但数组有容量限制。超出限制时会增加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);
        }

  • 相关阅读:
    Codeforces Round #273 (Div. 2) B . Random Teams 贪心
    Codeforces Round #250 (Div. 2)B. The Child and Set 暴力
    Codeforces Round #250 (Div. 1) B. The Child and Zoo 并查集
    微信小程序从零开始开发步骤(二)创建小程序页面
    微信小程序从零开始开发步骤(二)创建小程序页面
    微信小程序从零开始开发步骤(一)搭建开发环境
    微信小程序从零开始开发步骤(一)搭建开发环境
    七个帮助你处理Web页面层布局的jQuery插件
    前端切图:CSS实现隐藏滚动条同时又可以滚动
    前端切图:CSS实现隐藏滚动条同时又可以滚动
  • 原文地址:https://www.cnblogs.com/s122/p/8540364.html
Copyright © 2011-2022 走看看