2014-12-26 3 views
0

Я новичок в разработке Android и Java ... так что, может быть, мой вопрос будет смущен или не нормальный :) Можно ли создать ArrayList или любую коллекцию, где я даю значение индекса?Использовать необязательный индекс с ArrayList - возможно ли это?

Пример:

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

Когда я пытаюсь использовать это, я получил сообщение об исключении: IndexOutOfBounds ... Я хочу, чтобы добавить свой ArrayList (сбор) на Android ArrayAdapter ...

Так! Можно ли создать коллекцию с дополнительным индексом, и она может добавить android ArrayAdapter?

Спасибо за помощь!

+0

Почему вы хотели бы добавить по индексу, а не в порядке, который вы добавляете элементы? – SMA

ответ

2

Вы можете добавить элемент в определенное место в ArrayList, но только если размер ArrayList до этой операции больше или равен указателю, который вы указываете. Это означает, что ArrayList не может иметь пробелов. Вы не можете добавить элементы к индексу номер 3, если индексы 0,1,2 еще не заняты.

Итак, list.size() должно быть не менее 3 для того, чтобы list.add(3, "Item1"); был действительным. Добавление элементов в ArrayList таким образом увеличивает индекс всех элементов списка, начинающихся с данного индекса.

1

Вы можете создать свою собственную реализацию списка, который будет поддерживать эту функциональность:

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

}