1. 概述
在这个教程中,我们将学习如何在ArrayList
(/java-arraylist)中插入一个对象到特定位置。
2. 示例
如果我们想在一个ArrayList
(/java-arraylist)中向特定位置添加元素,可以使用add(int index, E element)
方法,这是List<E>
接口实现提供的。这个方法允许我们在指定索引处添加元素。
然而,如果索引超出范围(即索引小于0或大于size()
),它可能会抛出IndexOutOfBoundsException
。这意味着,如果我们有一个只包含4个元素的ArrayList
,我们不能在索引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
。
我们还可以看到,元素的顺序不再正确。当我们手动在特定位置添加项目时,通常希望保持这种顺序。否则,我们可以使用Integer::compareTo
对ArrayList
进行排序,或者实现自己的Comparator
。
3. 总结
在这篇文章中,我们讨论了add(int index, E element)
方法,以便在ArrayList<E>
中向特定位置插入新元素。我们需要确保索引在ArrayList
的有效范围内,并确保添加正确的对象。
文章中提到的所有代码示例可以在GitHub上找到。