• 集合框架(一)


    1.Java中的集合框架包含的内容

    Java中的集合框架为我们提供了一套性能优良,使用方便的接口和类,它们都位于java.util包中。

    Collection:工具类
    Collctionns:接口


    Collection :接口存储一组不唯一 无序

    List 不唯一 有序

    Set 唯一 无序

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

    集合框架
    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);
    }

  • 相关阅读:
    我所知道的数据库8-DML语言
    我所知道的数据库7-DDL语言(续2)
    CSS3 3D transform变换
    深入理解Node.js的异步编程风格(转载)
    ECMAscript
    JavaScript高级部分概念用法
    前端工程师面试题汇总
    10个最常见的HTML5中的面试题及答案
    js事件流
    本地储存
  • 原文地址:https://www.cnblogs.com/864466244qq/p/8528599.html
Copyright © 2020-2023  润新知