Atualizando itens de um ArrayList

4 respostas
R

Galera como faço pra atualizar os itens de um ArrayList?

Por exemplo, numa transferência de arquivo que é o meu caso, ao final da transferência de cada arquivo eu faço, ArraLyst.remove(1); então se os arquivos foram abertos de uma vez, ou seja usando o multi-selection tudo ocorre normalmente, agora se eu abro um de cada vez ele retorna este erro:

Index: 1, Size: 1

java.lang.IndexOutOfBoundsException: Index: 1, Size: 1

at java.util.ArrayList.RangeCheck(Unknown Source)

at java.util.ArrayList.remove(Unknown Source)

at upThreadV6.removeFirst(upThreadV6.java:66)

at upThreadV6.run(upThreadV6.java:106)

Pelo que eu entendi esse erro acontece pq ele não tem mais o indice 1, ou seja ao remover um item do ArrayList ele não atualiza.

Me entenderam??? Alguém pode me ajudar???

4 Respostas

D

A estrutura do ArrayList é atualizada sim, você deve ter algum erro na lógica do seu método. Para ver como a estrutura muda, testa esse código

ArrayList<Integer> lista = new ArrayList<Integer>();
lista.add( 1 );
lista.add( 2 );
lista.add( 3 );

System.out.println( lista.get( 0 ) );
System.out.println( lista.get( 1 ) );
System.out.println( lista.get( 2 ) );

lista.remove( 1 );

System.out.println( lista.get( 0 ) );
System.out.println( lista.get( 1 ) );

Se não mudasse deveria dar erro, pois foi removido o item do meio (índice 1) mas quando o mesmo é acessado, retorna 3, o antigo terceiro item, que agora ocupa a segunda posição.

É só lembrar das aulas de estruturas de dados :D

R

davidbuzatto é o seguinte, a cada arquivo enviado eu vou removendo. então se eu envio um por um, devo sempre remover o indice 1 do ArraList correto???
só que ao abrir um por um ao invez de abrir todos de uma vez pelo multi-selection como foi dito anteriormente, ele só envia o último arquivo aberto pelo JFileChooser, por será?

Eu abro um arquivo qualquer pelo JFileChooser, adiciono a ArrayList, jogo a lista para um iterator na hora de enviar pego o próximo item do iterator como um arquivo e faço o que eu tenho que fazer pra enviar.

Tem algo anormal???

Abraços

rafael

L

rafaelt:
davidbuzatto é o seguinte, a cada arquivo enviado eu vou removendo. então se eu envio um por um, devo sempre remover o indice 1 do ArraList correto???
só que ao abrir um por um ao invez de abrir todos de uma vez pelo multi-selection como foi dito anteriormente, ele só envia o último arquivo aberto pelo JFileChooser, por será?

Eu abro um arquivo qualquer pelo JFileChooser, adiciono a ArrayList, jogo a lista para um iterator na hora de enviar pego o próximo item do iterator como um arquivo e faço o que eu tenho que fazer pra enviar.

Tem algo anormal???

Abraços

rafael

Rafael nesse caso você deveria ir removendo o indice 0 não o 1 pois quando seu ArrayList ficar com tamanho 1 ele vai possuir apenas o indice 0, esse é o motivo da exception, size 1 vc tentou acessar o index 1
acho que é isso se entendi correto
[]'s

R

lcegatti:
rafaelt:
davidbuzatto é o seguinte, a cada arquivo enviado eu vou removendo. então se eu envio um por um, devo sempre remover o indice 1 do ArraList correto???
só que ao abrir um por um ao invez de abrir todos de uma vez pelo multi-selection como foi dito anteriormente, ele só envia o último arquivo aberto pelo JFileChooser, por será?

Eu abro um arquivo qualquer pelo JFileChooser, adiciono a ArrayList, jogo a lista para um iterator na hora de enviar pego o próximo item do iterator como um arquivo e faço o que eu tenho que fazer pra enviar.

Tem algo anormal???

Abraços

rafael

Rafael nesse caso você deveria ir removendo o indice 0 não o 1 pois quando seu ArrayList ficar com tamanho 1 ele vai possuir apenas o indice 0, esse é o motivo da exception, size 1 vc tentou acessar o index 1
acho que é isso se entendi correto
[]'s

Valeu lcegatti vou tentar isso, qualquer coisa eu aviso.
[]´s
Rafael

Criado 29 de janeiro de 2007
Ultima resposta 30 de jan. de 2007
Respostas 4
Participantes 3