Eu tenho um ArrayList
suposto list
e tem 8 itens AH e agora eu quero excluir 1,3,5 item de posição armazenado na matriz int de list
como posso fazer isso.
Estou tentando fazer isso com
ArrayList<String> list = new ArrayList<String>();
list.add("A");
list.add("B");
list.add("C");
list.add("D");
list.add("E");
list.add("F");
list.add("G");
list.add("H");
int i[] = {1,3,5};
for (int j = 0; j < i.length; j++) {
list.remove(i[j]);
}
Mas após o primeiro item excluído, a posição do array é alterada e na próxima iteração ele exclui o elemento errado ou dá exceção.
List
) usandoequals("B")
,equals("D")
eequals("F")
. Pense nisso.Respostas:
Neste caso específico , você deve remover os elementos em ordem decrescente. Primeiro índice
5
, em seguida3
, em seguida1
. Isso removerá os elementos da lista sem efeitos colaterais indesejáveis.fonte
String
s, nãoInteger
s (no entanto, concordo com sua observação).ArrayList<E>
- por que alguém iria querer remover um objeto de umaArrayList
posição baseada puramente em, em vez de testar o que está nessa posição? O OP pode muito bem estar sendo usadoString
como tipo de objeto para o,ArrayList
mas sua resposta é uma prática de codificação realmente ruim para genéricos, mesmo que resolva a situação particular do OP.ArrayList<String>
, nãoArrayList<E>
.Você pode remover elementos
ArrayList
usandoListIterator
,fonte
fonte
Como mencionado anteriormente
é talvez a única maneira segura de remover itens da lista durante o loop.
Para um entendimento mais profundo da remoção de itens usando o iterador, tente olhar este tópico
fonte
Presumo que a matriz i seja ascendente classificada, aqui está outra solução com Iterator, é mais genérico:
fonte
Que tal agora? Basta pensar nisso -
E a saída foi-
fonte
Tente desta forma,
fonte
fonte
Se você usar "=", uma réplica é criada para a lista de arraylist original na segunda, mas a referência é a mesma, então se você alterar em uma lista, a outra também será modificada. Use isto em vez de "="
fonte
O método remove (int index) de arraylist remove o elemento na posição especificada (índice) na lista. Após remover os itens da lista de matrizes, os elementos subsequentes são movidos para a esquerda.
Significa se um array contém {20,15,30,40}
Eu chamei o método: arraylist.remove (1)
então, os dados 15 serão excluídos e 30 e 40 esses dois itens serão deslocados à esquerda em 1.
Por esta razão, você deve primeiro excluir o item de índice superior da lista de arraylist.
Então ... para a sua situação ... o código será ..
fonte