Collection

Boa resposta. Concordo com o que vc falou sobre usar a chave primária do objeto ao invés do índice na lista.

Sobre a necessidade de remover, me recomendaram o LinkedHashSet ou o LinkedHashMultiset do Guava se eu precisar de objetos duplicados na lista.

Excluindo o problema dos objetos duplicados, realmente o que eu queria parece ser um SET ordenado por insercão, ou seja, um SET com uma lista encadeada internamente para manter a ordem. Daí obviamente quando vc remove do set ele vai direto nos ponteiros do elemento e remove ele da lista interna tb. Sem ser louco de loopar…

Entendo.

Basicamente, as tecnologias WEB permitem que eu trabalhe diretamente com o objeto retornado pelo lado servidor. Há poucas situações em que uso o índice para remover apenas da lista, get(i), pois 90% (senão mais) envio diretamente o objeto ao lado servidor, ao menos, o seu respectivo ID. Normalmente, essas listas representam dados populados diretamente no banco, portanto, removeu da lista, remove-se do banco e não trabalha com o remove(i).

A dúvida foi ali pois se encaixava ainda nos 10%. De qualquer forma, vou começar a reavaliar o código que ainda usa o índice e se realmente é necessário.
Grato por todas as opiniões e esclarecimentos.

[quote=nel]Entendo.

Basicamente, as tecnologias WEB permitem que eu trabalhe diretamente com o objeto retornado pelo lado servidor. Há poucas situações em que uso o índice para remover apenas da lista, get(i), pois 90% (senão mais) envio diretamente o objeto ao lado servidor, ao menos, o seu respectivo ID. Normalmente, essas listas representam dados populados diretamente no banco, portanto, removeu da lista, remove-se do banco e não trabalha com o remove(i).

A dúvida foi ali pois se encaixava ainda nos 10%. De qualquer forma, vou começar a reavaliar o código que ainda usa o índice e se realmente é necessário.
Grato por todas as opiniões e esclarecimentos.[/quote]

O que vc pode fazer é:

Ao invés de ter um ArrayList por índice, vc pode ter um LinkedHashMap por id do banco. Acho que dá no mesmo mas fica mais organizado e com uma performance melhor. Claro que essa diferenca de performance vai ser totalmente irrelevante para a sua aplicacao, mas acho que fica mais consistente usar id do banco em tudo. Mas isso é um chute sem conhecer muito bem o seu caso específico.