Supprimer un élément de ArrayList

J’ai une list suppositions ArrayList , et elle a 8 éléments AH et maintenant je veux supprimer 1,3,5 position Item stocké dans le tableau int de la list comment puis-je faire cela.

J’essaie de faire ça avec

 ArrayList list = new ArrayList(); 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é, le positionnement du tableau est modifié et dans la prochaine itération, il supprime le mauvais élément ou donne une exception.

Dans ce cas précis , vous devez supprimer les éléments dans l’ordre décroissant. Premier index 5 , puis 3 , puis 1 . Cela supprimera les éléments de la liste sans effets secondaires indésirables.

 for (int j = i.length-1; j >= 0; j--) { list.remove(i[j]); } 

Vous pouvez supprimer des éléments de ArrayList utilisant ListIterator ,

 ListIterator listIterator = List_Of_Array.listIterator(); /* Use void remove() method of ListIterator to remove an element from List. It removes the last element returned by next or previous methods. */ listIterator.next(); //remove element returned by last next method listIterator.remove();//remove element at 1st position listIterator.next(); listIterator.next(); listIterator.remove();//remove element at 3rd position listIterator.next(); listIterator.next(); listIterator.remove();//remove element at 5th position 
  public void DeleteUserIMP(UserIMP useriamp) { synchronized (ListUserIMP) { if (ListUserIMP.isEmpty()) { System.out.println("user is empty"); } else { Iterator it = ListUserIMP.iterator(); while (it.hasNext()) { UserIMP user = it.next(); if (useriamp.getMoblieNumber().equals(user.getMoblieNumber())) { it.remove(); System.out.println("remove it"); } } // ListUserIMP.remove(useriamp); System.out.println(" this user removed"); } Constants.RESULT_FOR_REGISTRATION = Constants.MESSAGE_OK; // System.out.println("This user Deleted " + Constants.MESSAGE_OK); } } 

Comme indiqué précédemment

 iterator.remove() 

est peut-être le seul moyen sûr de supprimer des éléments de liste pendant la boucle.

Pour mieux comprendre la suppression d’éléments à l’aide de l’iterator, essayez de regarder ce fil

 Ssortingng[] mSsortingng = new Ssortingng[] {"B", "D", "F"}; for (int j = 0; j < mString.length-1; j++) { List_Of_Array.remove(mString[j]); } 

Je suppose que le tableau est ascendant sortingé, voici une autre solution avec Iterator, il est plus générique:

 ArrayList list = new ArrayList(); 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}; Iterator itr = list.iterator(); int pos = 0; int index = 0; while( itr.hasNext() ){ itr.next(); if( pos >= i.length ){ break; } if( i[pos] == index ){ itr.remove(); pos++; } index++; } 

Que dis-tu de ça? Il suffit de lui donner une pensée

 import java.util.ArrayList; class Solution { public static void main (Ssortingng[] args){ ArrayList List_Of_Array = new ArrayList(); List_Of_Array.add("A"); List_Of_Array.add("B"); List_Of_Array.add("C"); List_Of_Array.add("D"); List_Of_Array.add("E"); List_Of_Array.add("F"); List_Of_Array.add("G"); List_Of_Array.add("H"); int i[] = {1,3,5}; for (int j = 0; j < i.length; j++) { List_Of_Array.remove(i[j]-j); } System.out.println(List_Of_Array); } } 

Et la sortie était-

 [A, C, E, G, H] 

Essayez de cette façon,

 ArrayList List_Of_Array = new ArrayList(); List_Of_Array.add("A"); List_Of_Array.add("B"); List_Of_Array.add("C"); List_Of_Array.add("D"); List_Of_Array.add("E"); List_Of_Array.add("F"); List_Of_Array.add("G"); List_Of_Array.add("H"); int i[] = {5,3,1}; for (int j = 0; j < i.length; j++) { List_Of_Array.remove(i[j]); } 

La méthode remove (int index) de l’arraylist supprime l’élément à la position spécifiée (index) dans la liste. Après avoir supprimé les éléments arraylist, déplacez les éléments suivants vers la gauche.

Signifie si une liste contient {20,15,30,40}

J’ai appelé la méthode: arraylist.remove (1)

les données 15 seront alors supprimées et les 30 et 40 ces deux éléments restront décalés 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 ..

 ArrayList list = new ArrayList(); 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 = i.length-1; j >= 0; j--) { list.remove(i[j]); } 

Si vous utilisez “=”, une réplique est créée pour l’arraylist d’origine dans la seconde, mais la référence est la même, donc si vous modifiez une liste, l’autre sera également modifiée. Utilisez ceci au lieu de “=”

  List_Of_Array1.addAll(List_Of_Array);