J. *_*aes 133 java android arraylist
我认为这是一个相当简单的问题,但我无法弄清楚如何正确地做到这一点.
我有一个空的arraylist:
ArrayList<object> list = new ArrayList<object>();
Run Code Online (Sandbox Code Playgroud)
我有一些我想要添加的对象,每个对象都必须处于某个位置.然而,必须以各种可能的顺序添加它们.当我尝试这个,它不起作用,我得到一个IndexOutOfBoundsException
:
list.add(1, object1)
list.add(3, object3)
list.add(2, object2)
Run Code Online (Sandbox Code Playgroud)
我曾尝试是填充ArrayList
用null
,然后做以上.它有效,但我认为这是一个可怕的解决方案.还有另一种方法吗?
sup*_*erM 199
你可以这样做:
list.add(1, object1)
list.add(2, object3)
list.add(2, object2)
Run Code Online (Sandbox Code Playgroud)
将object2添加到位置2后,它会将object3移动到位置3.
如果你希望object3始终位于position3,我建议你使用HashMap,其中position是key,object是value.
小智 28
您可以使用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);
Run Code Online (Sandbox Code Playgroud)
ArrayList将是 - [1,null,2,3,null,null,null,7,null,null]
med*_*pal 15
如果是这种情况,那么为什么不考虑使用常规数组,初始化容量并将对象放在所需的索引处.
Object[] list = new Object[10];
list[0] = object1;
list[2] = object3;
list[1] = object2;
Run Code Online (Sandbox Code Playgroud)
Eng*_*321 13
您还可以重写ArrayList以在您的大小和要添加的元素之间插入空值.
import java.util.ArrayList;
public class ArrayListAnySize<E> extends ArrayList<E>{
@Override
public void add(int index, E element){
if(index >= 0 && index <= size()){
super.add(index, element);
return;
}
int insertNulls = index - size();
for(int i = 0; i < insertNulls; i++){
super.add(null);
}
super.add(element);
}
}
Run Code Online (Sandbox Code Playgroud)
然后,您可以在ArrayList中的任何位置添加.例如,这个主要方法:
public static void main(String[] args){
ArrayListAnySize<String> a = new ArrayListAnySize<>();
a.add("zero");
a.add("one");
a.add("two");
a.add(5,"five");
for(int i = 0; i < a.size(); i++){
System.out.println(i+": "+a.get(i));
}
}
Run Code Online (Sandbox Code Playgroud)
从控制台产生这个结果:
0:零
1:一
2:两个
3:null
4:null
5:五
我提请你注意ArrayList.add
文档,它说 IndexOutOfBoundsException
如果索引超出范围(index < 0 || index > size()
)
size()
在打电话之前,请检查列表list.add(1, object1)
您需要使用空值填充空索引.
while (arraylist.size() < position)
{
arraylist.add(null);
}
arraylist.add(position, object);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
331277 次 |
最近记录: |