如何在ArrayList中的特定位置插入对象
假设我有一个大小为 n 的对象的 ArrayList。现在我想在特定位置插入另一个对象,假设在索引位置 k (大于 0 且小于 n),并且我希望索引位置 k 处及其之后的其他对象向前移动一个索引位置。那么有没有什么方法可以直接在Java中做到这一点。实际上我想在添加新对象时保持列表排序。
Suppose I have an ArrayList of objects of size n. Now I want to insert an another object at specific position, let's say at index position k (is greater than 0 and less than n) and I want other objects at and after index position k to shift one index position ahead. So is there any way to do this directly in Java. Actually i want to keep the list sorted while adding new object.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
发布评论
评论(7)
来自 Oracle 官方文档
此方法将指定的元素追加到此列表的末尾。
add(E e) //append element to the end of the arraylist.
此方法在指定的位置插入指定的元素在此列表中的位置。
void add(int index, E element) //inserts element at the given position in the array list.
此方法将此列表中指定位置的元素替换为指定元素。
set(int index, E element) //Replaces the element at the specified position in this list with the specified element.
请注意,当您在列表中的某个位置插入时,您实际上是在列表当前元素内的动态位置插入。请参阅此处:
package com.tutorialspoint;
import java.util.ArrayList;
public class ArrayListDemo {
public static void main(String[] args) {
// create an empty array list with an initial capacity
ArrayList<Integer> arrlist = new ArrayList<Integer>(5);
// use add() method to add elements in the list
arrlist.add(15, 15);
arrlist.add(22, 22);
arrlist.add(30, 30);
arrlist.add(40, 40);
// adding element 25 at third position
arrlist.add(2, 25);
// let us print all the elements available in list
for (Integer number : arrlist) {
System.out.println("Number = " + number);
}
}
}
$javac com/tutorialspoint/ArrayListDemo.java
$java -Xmx128M -Xms16M com/tutorialspoint/ArrayListDemo
线程“main”中的异常 java.lang.IndexOutOfBoundsException:索引:15,大小:0 在 java.util.ArrayList.rangeCheckForAdd(ArrayList.java:661) 在 java.util.ArrayList.add(ArrayList.java:473) 在 com.tutorialspoint.ArrayListDemo.main(ArrayListDemo.java:12)
添加到某个位置时必须自己处理ArrayIndexOutOfBounds。
为了方便起见,你可以在 Kotlin 中使用这个扩展函数
/**
* Adds an [element] to index [index] or to the end of the List in case [index] is out of bounds
*/
fun <T> MutableList<T>.insert(index: Int, element: T) {
if (index <= size) {
add(index, element)
} else {
add(element)
}
}
ArrayList<Integer> someData = new ArrayList<Integer>();
someData.add(1);
someData.add(2);
someData.add(3);
someData.add(4);
someData.add(5);
// currently someData = {1, 2, 3, 4, 5}
// Using add method with position someData = {1, 2, 3, 4, 6, 5}. size of array is increased
someData.add(5,6);
// Using set method with position someData = {1, 2, 3, 4, 7, 5}. Size remains same
someData.set(5,7);
阅读更多详细信息 此处
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
要在特定索引处插入值到 ArrayList 中,请使用:
此方法将移动列表的后续元素。但您不能保证列表将保持排序,因为您插入的新对象可能根据排序顺序位于错误的位置。
要替换指定位置的元素,请使用:
此方法替换指定位置的元素
列出指定元素,并返回之前的元素
在指定位置。
To insert value into ArrayList at particular index, use:
This method will shift the subsequent elements of the list. but you can not guarantee the List will remain sorted as the new Object you insert may sit on the wrong position according to the sorting order.
To replace the element at the specified position, use:
This method replaces the element at the specified position in the
list with the specified element, and returns the element previously
at the specified position.