Heim > Java > javaLernprogramm > Hauptteil

Methode zum Löschen bestimmter Elemente in der Arraylist-Schleife der Java-Sammlungsklasse

高洛峰
Freigeben: 2017-01-22 16:12:06
Original
1713 Leute haben es durchsucht

Während der Projektentwicklung müssen wir möglicherweise häufig einige Elemente in der ArrayList dynamisch löschen.

Ein falscher Weg:

<pre name="code" class="java">for(int i = 0 , len= list.size();i<len;++i){
  
 if(list.get(i)==XXX){
  
    list.remove(i);
  
 }
  
}
Nach dem Login kopieren

Die obige Methode löst die folgende Ausnahme aus:

Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 3, Size: 3
  at java.util.ArrayList.RangeCheck(Unknown Source)
  at java.util.ArrayList.get(Unknown Source)
  at ListDemo.main(ListDemo.java:20)
Nach dem Login kopieren

Weil Wenn Sie das Element gelöscht, aber den Iterationsindex nicht geändert haben, wird eine Ausnahme ausgelöst, wenn die Iteration den letzten erreicht.

Das obige Programm kann wie folgt verbessert werden:

for(int i = 0 , len= list.size();i<len;++i){
  
 if(list.get(i)==XXX){
  
    list.remove(i);
    --len;//减少一个
 }
  
}
Nach dem Login kopieren

Der obige Code ist korrekt.

Lassen Sie uns unten eine weitere Lösung vorstellen:

Die List-Schnittstelle implementiert die Iterator-Schnittstelle intern und stellt Entwicklern einen iterator() zur Verfügung, um ein Iteratorobjekt des aktuellen Listenobjekts abzurufen.

Iterator<String> sListIterator = list.iterator();
while(sListIterator.hasNext()){
  String e = sListIterator.next();
  if(e.equals("3")){
  sListIterator.remove();
  }
}
Nach dem Login kopieren

Das oben Gesagte ist auch richtig und die zweite Option wird empfohlen.

Die Implementierungsprinzipien der beiden Lösungen sind recht unterschiedlich. Die zweite Lösung wird nur von jdk gekapselt.

Wenn Sie sich den ArrayList-Quellcode ansehen, werden Sie feststellen, dass viele Methoden intern basierend auf der Iteratorschnittstelle implementiert sind. Daher wird empfohlen, die zweite Lösung zu verwenden.

Das Obige ist die gesamte Methode zum Löschen bestimmter Elemente in der Arraylist-Schleife der Java-Sammlungsklasse, die Ihnen vom Editor bereitgestellt wurde. Ich hoffe, dass jeder die chinesische PHP-Website unterstützt ~

Mehr Java-Sammlungsklasse arraylist Weitere Artikel zum Löschen bestimmter Elemente in einer Schleife finden Sie auf der chinesischen PHP-Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage