zoukankan      html  css  js  c++  java
  • 【Java集合】之ArrayList

    ArrayList

    一、概述

     默认初始化容量 10

     最大容量2147483647-8=2147483639

    扩容1.5倍

    测试

    public class TestArrayList {
        public static void main(String[] args) {
            List list = new ArrayList();
            A a = new A();
            list.add(new A());
            list.add(new B());
            list.add(new C());
            list.add(a);
            list.add(a);
            list.add(a);
            list.add(a);
            list.add(a);
            list.add(a);
            list.add(a);   //第10个
            list.add(a);   //第11个元素
    ​
            System.out.println(list);
        }
    }

    二、初始化

    使用IDEA调试

    List list = new ArrayList(); 初始化this.elementData={}

    elementData声明的注释:elementData是用于存放ArrayList元素的,ArrayList的容量就是这个数组的长度,如何空的而且elementData=DEFAULTCAPACITY_EMPTY_ELEMENTDATA的ArrayList,在添加第一个元素时会扩展大小到默认容量(10)

     

      

    三、Add

    list.add(new A()); 添加第一条

    进入ensureCapacityInternal(size+1)方法看看

    接着到grow()方法

    运行之后

    elementData由空变成了长度为10的数组

    当添加第11个元素时,size=10,所需存储的最小容量minCapacity=11,需要扩容

    扩容成10+10/2=15

    add总结

    1. ArrayList初始化为{},空的,当第一次添加元素时,会设置为默认容量(10)

    2. 当添加元素个数超出容量大小时,会扩容成原来的1.5倍

    四、Remove

    • list.remove(index)

    • list.remove(Object o)

     remove总结

    1.删除元素需要移动该元素后面的元素

    2.remove(Object o)只删除第一个匹配的元素

  • 相关阅读:
    Tair分布式key/value存储
    Ehcache详细解读
    专访阿里中间件高级专家沈询
    boost之词法解析器spirit
    快速部署Python应用:Nginx+uWSGI配置详解
    CMake如何执行shell命令
    show engine innodb status 详解
    HTTP Request header
    json python api
    mysql 索引对于select速度提升作用实验
  • 原文地址:https://www.cnblogs.com/tingtingzhou/p/10996131.html
Copyright © 2011-2022 走看看