zoukankan      html  css  js  c++  java
  • 集合框架(一)

    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);
    }

  • 相关阅读:
    Tomcat 服务器的安装和配置
    谈谈如何在面试中发掘程序猿的核心竞争力
    Apache2.4卡住无法访问的解决……
    如何设计一个编辑窗体的基类
    我是如何实现一个通用的验证基类的?
    我的微信头像换成国旗后的遭遇
    如何安装一个优秀的BUG管理平台——真的是手把手教学!
    DevExpress学习系列(控件篇):GridControl的基本应用
    打车软件烧钱背后的商业逻辑
    如何给你的为知笔记添加一个漂亮的导航目录
  • 原文地址:https://www.cnblogs.com/864466244qq/p/8528599.html
Copyright © 2011-2022 走看看