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。

     

  • 相关阅读:
    微信小程序开发之选项卡
    sublime text3安装cssrem 插件步骤
    我的第二个Vue项目
    node下载指定版本
    我的第一个vue项目构建
    js实现二级月日联动菜单
    webStrom设置打开默认浏览器
    html-webpack-plugin Configuration配置信息
    webpack html-webpack-plugin 遍历
    git使用笔记
  • 原文地址:https://www.cnblogs.com/newRedFlower/p/4485813.html
Copyright © 2011-2022 走看看