当我们要判断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