集合框架

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)

posted @ 2018-03-10 17:13  FANKEXIN  阅读(85)  评论(0编辑  收藏  举报