J'ai un ArrayList
supposé list
, et il a 8 éléments AH et maintenant je veux supprimer l'élément 1,3,5 position stocké dans le tableau int du list
comment puis-je faire cela.
J'essaye de faire ça avec
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]);
}
Mais après le premier élément supprimé, la position du tableau est modifiée et dans l'itération suivante, elle supprime le mauvais élément ou donne une exception.
List
) à l'aide deequals("B")
,equals("D")
etequals("F")
. Pensez-y.Réponses:
Dans ce cas précis , vous devez supprimer les éléments par ordre décroissant. Premier indice
5
, puis3
, ensuite1
. Cela supprimera les éléments de la liste sans effets secondaires indésirables.la source
String
s, pas desInteger
s (néanmoins, je suis d'accord avec votre observation).ArrayList<E>
- pourquoi quelqu'un voudrait-il supprimer un objet d'uneArrayList
position uniquement basée sur la position au lieu de tester ce qui se trouve à cette position? L'OP peut bien être utiliséString
comme type d'objet pour leArrayList
mais votre réponse est une très mauvaise pratique de codage pour les génériques, même si cela résout la situation particulière de l'OP.ArrayList<String>
, nonArrayList<E>
.Vous pouvez supprimer des éléments de l'
ArrayList
utilisationListIterator
,la source
la source
Comme indiqué précédemment
est peut-être le seul moyen sûr de supprimer des éléments de liste pendant la boucle.
Pour une compréhension plus approfondie de la suppression d'éléments à l'aide de l'itérateur, essayez de consulter ce fil
la source
Je suppose que le tableau i est trié par ordre croissant, voici une autre solution avec Iterator, elle est plus générique:
la source
Que dis-tu de ça? Pensez-y juste-
Et le résultat était-
la source
Essayez-le de cette façon,
la source
la source
Si vous utilisez "=", une réplique est créée pour l'arraylist d'origine dans la seconde liste, mais la référence est la même donc si vous changez dans une liste, l'autre sera également modifiée. Utilisez ceci au lieu de "="
la source
remove (int index) méthode de arraylist supprime l'élément à la position spécifiée (index) dans la liste. Après avoir supprimé les éléments de la liste de lecture, les éléments suivants sont décalés vers la gauche.
Signifie si une arraylist contient {20,15,30,40}
J'ai appelé la méthode: arraylist.remove (1)
alors les données 15 seront supprimées et 30 & 40 ces deux éléments seront décalés à gauche de 1.
Pour cette raison, vous devez d'abord supprimer l'élément d'index supérieur de l'arraylist.
Donc ... pour votre situation donnée ... le code sera ..
la source