Java基础--ArrayList的方法--ArrayList源码

一,简介

ArrayList继承自AbstractList是我们在开发中最常用的集合之一,他的底层是一个动态数组(elementData),可以放入多个的重复值,也可以放入多个null值,是线程不安全的.
查询遍历时比较快,但是在做插入和删除时会移动前后元素的位置,所以效率比较低

二.属性

DEFAULT_CAPACITY:默认的初始容量为10;
DEFAULTCAPACITY_EMPTY_ELEMENTDATA:无参构造器默认创建的数组长度为0(就是为什么ArrayList初始容量为0了)
MAX_ARRAY_SIZE:最大容量是Integer的最大值-8(具体多少自己算一下吧)
Object[ ] elementData:这个就是存储数据的地方了
size:表示存储了多少个数据

三.构造器:

使用的比较多的默认构造器,他给elementDate赋予了一个初始容量,就是一个空的数组;(初始为0)
在这里插入图片描述
带有初始容量的构造器,如果传递过来的参数大于0name就新建一个长度为initialCapacity的Object数组,如果等于0就给他一个空的数组,否则就抛出异常
在这里插入图片描述

这个构造器可以传递一个集合,调用toArray方法转换为数组之后判断他的长度,如果为0就赋值为空数组,如果不为0就判断数据类型然后进行数组的copy

在这里插入图片描述

四.常用方法:

size():

获取存放了多少元素,直接返回size

在这里插入图片描述
isEmpty():

判断集合是否为null,如果存入元素的大小为0就返回true

在这里插入图片描述
contains(Object o):

传入一个值判断在集合中是否存在,调用indexOf方法(下一个就是)

在这里插入图片描述
indexOf(Object o):

返回传入元素在数组中的下标位置(查找到第一个就进行返回)

在这里插入图片描述
lastIndexOf();

查询锁传入对象所在的最后一个索引
size-1的操作时为了避免数组越界

在这里插入图片描述
clone();

调用的时父类的clone方法,得到一个ArrayList然后再对elementData进行拷贝然后赋值给通过clone方法得到的数组

在这里插入图片描述
toArray():

转换为一个数组

在这里插入图片描述
get();

首先调用rangeCheck方法判断传入的索引值是否大于数组内存放元素长度,如果大于就抛出异常

在这里插入图片描述
add();

添加元素,代码很少,但是调用了一个方法,涉及到很多方法的调用判断,返正就是进行长度的盘端进行扩容

在这里插入图片描述
remove()(按照索引删除,返回删除的内容);

删除这个下标的值并将其返回,并且进行内部元素的移位(首先判断是否是最后一个,使用总个数-下标-1如果是最后一个结果为0,就将最后一个下标的值赋予null值,如果不是0就进行copy移位)

在这里插入图片描述
remove(Object o)(按照内容删除,删除全部的);

跟for循环遍历数组进行值的判断,equals比较值是否相等,如果相同就调用fastRemove方法进行删除((首先判断是否是最后一个,使用总个数-下标-1如果是最后一个结果为0,就将最后一个下标的值赋予null值,如果不是0就进行copy移位)

在这里插入图片描述
clear();

清空整个集合,将size归0

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值