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

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

Jan 22, 2017 pm 04:12 PM

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!

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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)