问题

我认为这是一个相当简单的问题,但我无法弄清楚如何正确地做到这一点。

我有一个空的arraylist:

ArrayList<object> list = new ArrayList<object>();

我有一些我想要添加的对象,每个对象都必须处于某个位置。然而,有必要以每种可能的顺序添加它们。当我尝试这个,它不起作用,我得到了一个IndexOutOfBoundsException

list.add(1, object1)
list.add(3, object3)
list.add(2, object2)

我所尝试的是填充ArrayListwithnull,然后执行上述操作。它有效,但我认为这是一个可怕的解决方案。还有另一种方法吗?


#1 热门回答(182 赞)

你可以这样做:

list.add(1, object1)
list.add(2, object3)
list.add(2, object2)

将object2添加到位置2后,它会将object3移动到位置3。

如果你希望object3始终位于position3,我建议你使用HashMap,其中position是key,object是value。


#2 热门回答(22 赞)

你可以使用Array对象并将其转换为ArrayList-

Object[] array= new Object[10];
array[0]="1";
array[3]= "3";
array[2]="2";
array[7]="7";

List<Object> list= Arrays.asList(array);

ArrayList将是 - [1,null,2,3,null,null,null,7,null,null]


#3 热门回答(15 赞)

如果是这种情况,那么为什么不考虑使用常规数组,初始化容量并将对象放在所需的索引处。

Object[] list = new Object[10];

list[0] = object1;
list[2] = object3;
list[1] = object2;

原文链接