栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

ArrayList源码剖析

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

ArrayList源码剖析

ArrayList源码剖析

首先我们先创建一个ArrayList集合,在ArrayList里添加10个数据,使用Dbug来进行调试

//创建ArrayList集合

public class ArrayListDemo02 {
    public static void main(String[] args) {
        ArrayList list=new ArrayList<>();
        list.add("hello");
        list.add("hello");
        list.add("hello");
        list.add("hello");
        list.add("hello");
        list.add("hello");
        list.add("hello");
        list.add("hello");
        list.add("hello");
        list.add("hello");
       list.add(1,"李晓龙教育");
        String s = list.get(4);
        System.out.println(s);
        list.remove(5);
        list.set(6,"李晓龙");
        Iterator iterator=list.iterator();
        while (iterator.hasNext()) {
            Object next =  iterator.next();
            System.out.println(next);
        }
    }
}

我们启动程序

进入add方法

首先会调用一个ensureCapacityInternal()

传入一个size位1的值minCapacity

进行判断,如果元素等于空,则minCapacity=默认容量和最小容量两个其中一个最大的。

接下来调用一个方法ensureExplicitCapacity(mincapacity) 却表显示容量

我们接下来往下走

首先进入到modCount++ 是来进行记录插入数据的次数

继续下一步,进行判断如果最小容量10 -数组长度大于0,那我们就扩容

我们进入扩容方法grow

首先让旧的容量等于素组长度,

让新的容量=旧的容量+(旧的容量右移一位)也就1.5倍。

当然了我们开始旧的容量为0在进行+之后还是0

进入if语句判断新的容量0-最小容量10 小于0

让我们新的容量等min(10)完成整个扩容之后,返回

最后还是回到add方法

 public boolean add(E e) {
 //这个方法是确保内容量
        ensureCapacityInternal(size + 1);  // Increments modCount!!
        把元素赋给数组,然后size++
        elementData[size++] = e;
        返回
        return true;
    }
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/667568.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号