使用ArrayList的可选索引 - 是否可能?

时间:2014-12-26 10:18:56

标签: java android arraylist collections android-arrayadapter

我是Android和Java开发的新手......所以也许我的问题会被混淆或不正常:) 是否可以创建一个ArrayList或任何我给出索引值的集合?

示例:

ArrayList<String> list = new ArrayList<String>();
list.add(3, "Item1");
list.add(10, "Item2");

当我尝试使用它时,我收到一条异常消息:IndexOutOfBounds ... 我想将我的ArrayList(集合)添加到Android ArrayAdapter ......

原来如此!是否可以使用可选索引创建一个集合,并且它能够添加android ArrayAdapter?

谢谢你的帮助!

3 个答案:

答案 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);
    }

}