ArrayList 中的contains,indexOf,size方法

本文深入探讨ArrayList的contains方法实现原理,解析其如何判断元素是否存在,以及size方法如何准确反映集合长度,揭示ArrayList对null值的处理机制。

在这里插入图片描述
在这里插入图片描述

当我们要判断ArrayList是否包含某个元素的时候,ArrayList给我们提供了contains方法,返回值为Boolean类型
在这里插入图片描述

由源码我们可以知道,contains方法底层用的是indexOf方法

indexOf 首先会对我们传入的对象进行判断,是否是null,然后循环遍历集合中的元素,当传入的对象和集合元素相等的时候,跳出循环,返回传入对象所在的下标;如果没有找到匹配的就 return -1;

其实由这里我们可以知道,ArrayList其实是可以允许null值存在的。

size 方法
在这里插入图片描述

在String类中,我们获取字符串的长度用的是 length()的方法
当我们定义了一个数组,如果要获取数组的长度直接通过 .length即可。
在这里插入图片描述
ArrayList 集合底层使用数组实现的,那么按理说应该 也可以通过length获取集合长度。当实例化一个ArrayList的时候,如果没有定义长度,默认会给我们生成一个容量为10的数组。比如下边我创建了一个集合,插入了三个对象,其实ArrayList给我分配了10个空间,如果我能够通过length获取集合长度,那应该获取的是10,可是我明明只插入的3个对象啊。
在这里插入图片描述

肯定作者当时也考虑到这一点了,在ArrayList 类中定义了一个size,专门用来表示集合的长度
在这里插入图片描述

当我们要获取集合长度的时候,只需要调用size()方法,直接 返回集合长度。
在这里插入图片描述

数组中获取长度用length,集合需要用size

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值