我是Android和Java开发的新手......所以也许我的问题会被混淆或不正常:) 是否可以创建一个ArrayList或任何我给出索引值的集合?
示例:
ArrayList<String> list = new ArrayList<String>();
list.add(3, "Item1");
list.add(10, "Item2");
当我尝试使用它时,我收到一条异常消息:IndexOutOfBounds ... 我想将我的ArrayList(集合)添加到Android ArrayAdapter ......
原来如此!是否可以使用可选索引创建一个集合,并且它能够添加android ArrayAdapter?
谢谢你的帮助!
答案 0 :(得分:2)
您可以将元素添加到ArrayList中的特定位置,但前提是该操作之前的ArrayList的大小大于或等于您指定的索引。这意味着ArrayList可以没有间隙。如果索引0,1,2尚未被占用,则无法向索引号3添加元素。
因此,list.size()
应该至少为3才能使list.add(3, "Item1");
有效。以这种方式向ArrayList添加元素会增加从给定索引开始的列表中所有元素的索引。
答案 1 :(得分:1)
使用HashMap,它应该可以解决您的问题 http://docs.oracle.com/javase/7/docs/api/java/util/HashMap.html
答案 2 :(得分:1)
您可以创建自己的List实现,它将支持此功能:
public class SparseArrayList<E> extends ArrayList<E> {
@Override
public E set(int index, E element) {
while (size() <= index) add(null);
return super.set(index, element);
}
}