zoukankan      html  css  js  c++  java
  • ArrayList源码分析

    ArrayList继承AbstractList类,实现List接口。继承关系见下图。

        图1. 类继承图

    图2. 接口继承图

    ArrayList常用方法

    //添加

    public void add(int index);

    public void add(int index, T element);

    //删除

    public T remove(int index);

    public boolean remove(Object o);

    //修改

    public T set(int index, T element);

    //查询

    public int indexOf(Object o);

    public int lastIndexOf(Object o)

    public T get(int index);

    public boolean contains(Object o);

    在自学的过程中有启发的地方总结如下:

    1.查询方法的互调关系

      四个查询方法中的基础方法中,基础方法为indexOf...,其他方法都可以调用该方法

    2. 查询方法lastIndexOf

     查找元素最后一次出现的位置,这时可以倒序遍历数组,则第一次出现的值即为正序遍历的结果。

    3.即使有功能类似的方法,也可以创建逻辑更简单的方法工内部调用。

    如下为 private void fastRemove(int index)方法,在删除指定值(public boolean remove(Object o))时,调用该方法。

    与public T remove(int index);方法相比,该方法不做数组边界检查(因为该方法的调用者已经完成了边界检查),也不返回被删除的值。

        /*
         * Private remove method that skips bounds checking and does not
         * return the value removed.
         */
        private void fastRemove(int index) {
            modCount++;
            int numMoved = size - index - 1;
            if (numMoved > 0)
                System.arraycopy(elementData, index+1, elementData, index,
                                 numMoved);
            elementData[--size] = null; // Let gc do its work  (1)
        }

    4. 及时将不再使用的值置为null,以便垃圾回收机制回收。 

        如上,删除最后一个元素值, elementData[--size] = null;及时将最后一个值置为null。

     

  • 相关阅读:
    tp5 thinkphp5 伪静态修改 fastadmin
    ThinnkPHP内置视图循环语句
    PHP禁止重写策略
    冒泡排序
    Ruby--正则
    JS正则
    JS禁止父元素事件
    Rails--default_scope
    公网映射
    查企业情况和招聘的网站
  • 原文地址:https://www.cnblogs.com/newRedFlower/p/4485813.html
Copyright © 2011-2022 走看看