在ArrayList中的特定位置插入对象

2023/06/07

1. 概述

在本教程中,我们将学习如何在ArrayList中的特定位置插入对象。

2. 示例

如果我们想将一个元素添加到ArrayList的特定位置,我们可以使用通过实现List<E>接口提供的add(int index, E element)方法。这个方法允许我们在特定索引处添加一个元素

如果索引超出范围(index < 0或者index > size()),它会抛出IndexOutOfBoundsException。这意味着如果我们在ArrayList中只有4个元素,我们不能使用它在位置4添加元素,因为我们从0开始计数。我们必须在这里使用标准的add(E e)方法。

首先,我们将创建一个新的ArrayList并向其添加四个元素:

List<Integer> integers = new ArrayList<>();
integers.add(5);
integers.add(6);
integers.add(7);
integers.add(8);
System.out.println(integers);

这将导致:

现在,如果我们在索引1处添加另一个元素:

integers.add(1, 9);
System.out.println(integers);

ArrayList内部将首先从给定索引开始移动对象:

这是可行的,因为ArrayList是一个可增长的数组,可以根据需要自动调整容量:

然后在给定索引处添加新元素:

添加特定索引将导致ArrayList的平均操作性能为O(n/2)。例如,LinkedList的平均复杂度为O(n/4),如果索引为0,则复杂度为O(1)。因此,如果我们严重依赖于在特定位置添加元素,则需要仔细研究LinkedList

我们还可以看到元素的顺序不再正确。当我们在特定位置手动添加元素时,这是我们经常想要实现的。否则,我们可以使用integers.sort(Integer::compareTo)再次对ArrayList进行排序或实现我们自己的比较器。

3. 总结

在本文中,我们讨论了add(int index, E element)方法,以便我们可以在特定位置向ArrayList<E>添加新元素。我们必须注意保持在ArrayList的索引范围内,并确保我们允许正确的对象。

与往常一样,本教程的完整源代码可在GitHub上获得。

Show Disqus Comments

Post Directory

扫码关注公众号:Taketoday
发送 290992
即可立即永久解锁本站全部文章