一、ArrayList简介
ArrayList是Java中最常用的集合类之一,它可以动态地增加或删除元素。底层实现是基于Object[]数组,数组初始长度为10,在元素个数占数组长度的70%时会自动进行扩容,扩容量为原长度的1.5倍。
当然,如果我们知道元素个数的上限,可以通过构造函数来初始化ArrayList的长度,以减少扩容的次数,从而提高效率。
二、ArrayList的add方法
在ArrayList中,添加元素最常用的方法是add,其方法签名为:
public boolean add(E e)
其中,E代表泛型,可以是任意的类类型。
add方法的作用是将指定的元素添加到ArrayList的末尾。
在这里,我们需要注意add方法的返回值为布尔类型,返回值为true表示添加成功,返回值为false表示添加失败。
三、ArrayList的add方法操作示例
下面我们展示add方法的具体使用方法,代码如下:
class Test { public static void main(String[] args) { ArrayList<String> list = new ArrayList<>(); list.add("A"); list.add("B"); list.add("C"); System.out.println(list); // [A, B, C] } }
在上面的代码中,我们先创建了一个String类型的ArrayList,然后通过add方法向其中添加了三个元素,最后输出结果为[A, B, C]。
四、ArrayList的add方法原理解析
在add方法的内部实现中,有两个变量值需要我们了解一下,具体如下:
- elementData:Object类型数组,存储元素的数组。
- size:int类型变量,表示ArrayList中元素的个数。
add方法会首先判断elementData数组是否足够存储,如果不足,则会进行扩容(默认扩容至原长度的1.5倍),然后将新元素添加到数组末尾,并增加size的值。
其代码实现如下:
public boolean add(E e) { ensureCapacityInternal(size + 1); elementData[size++] = e; return true; } private void ensureCapacityInternal(int minCapacity) { if (elementData == DEFAULT_CAPACITY_EMPTY_ELEMENT_DATA) { minCapacity = Math.max(DEFAULT_CAPACITY, minCapacity); } ensureExplicitCapacity(minCapacity); } private void ensureExplicitCapacity(int minCapacity) { modCount++; // overflow-conscious code if (minCapacity - elementData.length > 0) grow(minCapacity); } private void grow(int minCapacity) { // overflow-conscious code int oldCapacity = elementData.length; int newCapacity = oldCapacity + (oldCapacity >> 1); if (newCapacity - minCapacity 0) newCapacity = hugeCapacity(minCapacity); // minCapacity is usually close to size, so this is a win: elementData = Arrays.copyOf(elementData, newCapacity); }
五、ArrayList的add方法性能优化
当我们需要向ArrayList中添加大量元素时,频繁的扩容会造成性能的下降。为了解决这个问题,我们可以通过设置ArrayList的初始长度或者扩容量来优化性能。
下面,我们将展示通过设置初始长度来进行性能优化的示例。代码如下:
class Test { public static void main(String[] args) { ArrayList<String> list = new ArrayList<>(100000); long startTime = System.currentTimeMillis(); for (int i = 0; i < 100000; i++) { list.add("A" + i); } long endTime = System.currentTimeMillis(); long duration = endTime - startTime; System.out.println("Duration: " + duration + "ms"); } }
在上面的代码中,我们首先设置了ArrayList的初始长度为100000,然后通过循环向其中添加了100000个元素,并打印了添加元素所耗费的时间。
通过运行上面的代码,我们可以发现,由于设置了初始长度,添加元素所需的时间显著降低了。
六、总结
在本篇文章中,我们详细地介绍了Java中ArrayList的add方法,包括其作用、返回值、示例以及内部实现和性能优化等内容。
对于Java工程师而言,熟练掌握ArrayList的add方法及其性能优化技巧是非常重要的,可以在实际开发中提高代码的效率。
原创文章,作者:XNZR,如若转载,请注明出处:https://www.506064.com/n/134759.html