Eu acho que é uma pergunta bastante simples, mas eu não consigo'não consigo descobrir como fazer isto correctamente.
I' tenho uma lista de arrays vazia:
ArrayList<object> list = new ArrayList<object>();
I'tenho alguns objetos que quero adicionar e cada objeto tem que estar em uma certa posição. É necessário no entanto que eles possam ser adicionados em cada ordem possível. Quando tento isto, não funciona't e recebo um IndexOutOfBoundsException
:
list.add(1, object1)
list.add(3, object3)
list.add(2, object2)
O que eu tentei foi preencher a ArrayList
com nulo
e depois fazer o acima. Funciona, mas eu acho que é'é uma solução horrível. Existe outra maneira de fazer isso?
Você pode fazer assim:
list.add(1, object1)
list.add(2, object3)
list.add(2, object2)
Depois de adicionar o objeto2 à posição 2, ele irá mover o objeto3 para a posição 3.
Se você quiser que o objeto3 esteja na posição3 o tempo todo I'sugerimos que você use um HashMap com a posição como chave e o objeto como valor.
Se esse'é o caso então porque don'não considera usar um Array regular, inicialize a capacidade e coloque os objectos no índice que pretende.
Object[] list = new Object[10];
list[0] = object1;
list[2] = object3;
list[1] = object2;
Chamo a sua atenção para a documentação ArrayList.add, que diz que lança IndexOutOfBoundsException' - se o índice estiver fora do intervalo (
index < 0 || index > size()`)
Verifique o size()
da sua lista antes de chamar list.add(1, object1)