Tengo una ArrayList
supongamos list
, y tiene 8 artículos AH y ahora quiero eliminar 1,3,5 posición de artículos almacenados en int matriz de la list
forma en que puedo hacer esto.
Estoy tratando de hacer esto con
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]);
}
Pero después de que se cambia el primer elemento eliminado, la posición de la matriz y en la siguiente iteración elimina el elemento incorrecto o da una excepción.
List
) usandoequals("B")
,equals("D")
yequals("F")
. Piénsalo.Respuestas:
En este caso específico , debe eliminar los elementos en orden descendente. Primero índice
5
, luego3
, luego1
. Esto eliminará los elementos de la lista sin efectos secundarios indeseables.fuente
String
s, noInteger
s (sin embargo, estoy de acuerdo con su observación).ArrayList<E>
: ¿por qué alguien querría eliminar un objeto de una posiciónArrayList
basada puramente en en lugar de probar lo que está en esa posición? Es posible que el OP se esté utilizandoString
como tipo de objeto para el,ArrayList
pero su respuesta es una práctica de codificación realmente mala para los genéricos, incluso si resuelve la situación particular del OP.ArrayList<String>
, noArrayList<E>
.Puede eliminar elementos de
ArrayList
usoListIterator
,fuente
fuente
Como se mencionó anteriormente
es quizás la única forma segura de eliminar elementos de la lista durante el ciclo.
Para una comprensión más profunda de la eliminación de elementos usando el iterador, intente mirar este hilo
fuente
Supongo que la matriz i está ordenada en ascenso, aquí hay otra solución con Iterator, es más genérica:
fuente
¿Qué tal esto? Solo dale un pensamiento
Y la salida fue-
fuente
Pruébalo de esta manera
fuente
fuente
Si usa "=", se crea una réplica para la lista de matrices original en la segunda, pero la referencia es la misma, por lo que si cambia en una lista, la otra también se modificará. Use esto en lugar de "="
fuente
El método remove (int index) de arraylist elimina el elemento en la posición especificada (índice) en la lista. Después de eliminar los elementos de la lista de arrays, los elementos posteriores se desplazan hacia la izquierda.
Significa que si una lista de arrays contiene {20,15,30,40}
He llamado al método: arraylist.remove (1)
luego los datos 15 se eliminarán y 30 y 40 estos dos elementos se dejarán desplazados en 1.
Por esta razón, primero debe eliminar el elemento de índice más alto de la lista de matrices.
Entonces ... para su situación dada ... el código será ...
fuente