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)只删除第一个匹配的元素

  • 相关阅读:
    C++Builder中的异常传递
    lpc1343 usb isp not work in linux and mac
    玩玩Hiweed linux 2.0
    有关 stringWithString 和 initWithString
    Windows mobile 中获取内存使用情况
    玩玩xubuntu 8.10
    升级我的ipaq hx2110到Windows Mobile 6.0
    面试技巧 from IBM
    常用Sql语句
    c#的事件机制示例代码: 猫> 老鼠, 主人
  • 原文地址:https://www.cnblogs.com/tingtingzhou/p/10996131.html
Copyright © 2011-2022 走看看