Java 如何将元素放置在数组列表的特定位置
我想在数组列表的特定位置添加一个元素,我试图用初始容量初始化数组列表Java 如何将元素放置在数组列表的特定位置,java,arraylist,Java,Arraylist,我想在数组列表的特定位置添加一个元素,我试图用初始容量初始化数组列表 import java.util.ArrayList; public class AddInArrayList{ public static void main(String[] args) { ArrayList list = new ArrayList(4); Object obj1 = new Object(); list.add(1, obj1); } } 输出 线程“main”java.l
import java.util.ArrayList;
public class AddInArrayList{
public static void main(String[] args) {
ArrayList list = new ArrayList(4);
Object obj1 = new Object();
list.add(1, obj1);
}
}
输出
线程“main”java.lang.IndexOutOfBoundsException中的异常:
索引:1,大小:0
在java.util.ArrayList.add(ArrayList.java:359)处
位于AddInArrayList.main(AddInArrayList.java:7)
有没有办法按特定索引位置添加元素?数组不允许您在大于array.size的索引处执行插入 因此,如果要将每个项目与数字/索引关联,最好使用映射
Map map = new HashMap<Integer, Object>();
Object obj1 = new Object();
map.put(1, obj1);
Map Map=newhashmap();
对象obj1=新对象();
map.put(1,obj1);
您将获得索引自动边界异常
,因为当您调用add(index,value)
时,该值必须不小于0且不大于list.size()-1
。在您的情况下,它应该是添加(0,obj1)您对以下含义感到困惑:您传递给构造函数的数字不设置初始列表大小
无法在空列表的索引1处插入元素,因为列表插槽不能为空。如果希望函数在插入长度大于其长度的索引之前展开列表,可以使用:
static void addAtPos(List list, int index, Object o) {
while (list.size() < index) {
list.add(null);
}
list.add(index, o);
}
static void addAtPos(列表、int索引、对象o){
while(list.size()
也就是说,
ArrayList
s基于的数组在中间插入时性能不佳。因此,不同的数据结构几乎肯定更适合您的问题,但您必须让我们知道您要实现的目标。初始容量将仅用于设置基础阵列的初始“缓冲区”大小。所以在调用newarraylist(4)
之后,列表仍然是空的
如果您知道列表将包含大约10000个元素,请使用初始容量c=10\u 000+x
创建ArrayList实例。这样可以避免昂贵的ArrayList#grow(newcapacity)
(java8)调用
方法
ArrayList#add(position,element)
也可以称为ArrayList#add并将其他方法移动到右侧(position,element)
它没有任何解决方法。我需要一种在特定位置添加元素的方法。An不是数组!