问题
我认为这是一个相当简单的问题,但我无法弄清楚如何正确地做到这一点。
我有一个空的arraylist:
ArrayList list = new ArrayList();
我有一些我想要添加的对象,每个对象都必须处于某个位置。然而,有必要以每种可能的顺序添加它们。当我尝试这个,它不起作用,我得到了一个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 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;