持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第3天,点击查看活动详情
大家好,我是尚影嫣🌷,一名Java后端程序媛。如果您喜欢我的文章,欢迎点赞➕关注❤️,让我们成为更好的我们~🥰
List
List接口继承Collection接口,只能单值存储。
List是存储重复元素的集合,所有元素以线性方式进行存储,可以通过索引来访问集合中指定的元素。List集合中元素的存储顺序和取出顺序一致。
List在Collection接口的基础上,增加了一些根据元素位置索引来操作集合的特有方法。
集合不能定义为基本数据类型(int、char、float等),应该定义为包装类数据类型(Integer、String等)。
ArrayList集合和LinkedList集合的区别:
1、ArrayList集合底层是数组,而且是Object[] 类型;而LinkedList集合底层是链表。
2、ArrayList集合查询数据很快,但是增删数据很慢;LinkedList集合增删数据很快。但是查询数据很慢。
ArrayList 在实例化时会构造一个初始容量为10的空列表,会自动扩容1.5倍。
ArrayList(int initialCapacity) 是指定容量的构造函数。
调用无参构造方法进行初始化时,会创建一个长度为0的数组,当调用add( ) 方法时会判断够不够存,如果不够会自动扩容1.5倍,一直扩到够存为止。所以如果要存的数据量很大时,最好调用指定容量的参构造方法,使其容量能一次到位。
在调用ArrayList的add()方法时,都会返回true。源码如下👇
public boolean add(E e) {
ensureCapacityInternal(size + 1); // Increments modCount!!
elementData[size++] = e;
return true;
}
private void ensureCapacityInternal(int minCapacity) {
if (elementData == DEFAULTCAPACITY_EMPTY_ELEMENTDATA) {
// 取默认长度和最小长度的最大值
minCapacity = Math.max(DEFAULT_CAPACITY, minCapacity);
}
ensureExplicitCapacity(minCapacity);
}
private void ensureExplicitCapacity(int minCapacity) {
modCount++;
// overflow-conscious code
if (minCapacity - elementData.length > 0)
grow(minCapacity);
}
Vector和ArrayList很类似,但是线程安全。