• 集合框架


    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)

  • 相关阅读:
    算法导论第十八章 B树
    腾讯2016春招之算法编程解析
    LeetCode:5_Longest Palindromic Substring | 最长的回文子串 | Medium
    搜狗2016校园招聘之算法编程解析
    linux sed在某些字符串的下一行插入内容?sed在下一行插入?
    linux shell搜索某个字符串,然后在后面加上字符串?字符串后面插入字符串?sed字符串后面插入字符串?
    linux环境中,如何使用tar来创建压缩包?解压缩?
    linux环境中,ssh登录报错,Permission denied, please try again.
    linux环境中安装NRPE插件执行远程"本地资源"检查?NRPE安装?
    linux环境安装nagiosgraph将nagios的性能数据绘制成动态图表?
  • 原文地址:https://www.cnblogs.com/fkx1/p/8540741.html
Copyright © 2020-2023  润新知