List<String> auf doppelte Einträge überprüfen

Allrounder93

Aktives Mitglied
Moin,

ich habe eine String-Liste mit rund 80.000 Einträgen und würde diese gerne auf doppelte Einträge überprüfen...
Dabei soll bei jedem Treffer der eintrag gelöscht werden und eine Methode ausgeführt werden, die dann mit dem doppelten Listeneintrag weiterarbeitet...
Ich komme bisher nur Fehlermeldungen, da ich zwei For-Schleifen benutze und sobald ich etwas lösche das ganze nicht mehr funkt...

Kann mir jemand weiterhelfen?
 

Rubber

Aktives Mitglied
Ich gehe mal davon aus, du arbeitest mit
Java:
for(String f: StringList){
...
}

In dem fall gilt:
du darfst nicht aus der Liste löschen, solange diese ncoh durchlaufen wird.
Ich hatte es einfach so gemacht, dass ich eine 2. Liste angelegt hatte, wo ich dann alle zu löschenden Objekte abgelegt hatte und danach halt einfach die neue Liste durchgehen und aus der alten Liste jedes Objekt löschen.
Aus der ersten sind die doppelten dann raus und in der 2. noch drin.
 

jonas.r

Mitglied
Während du über eine Liste iterierst, kannst du diese nicht modifizieren, also Elemente aus ihr löschen oder hinzufügen. Du bekommst dann eine CurrentModificationException. Mache es so, dass du die Elemente, die gelöscht werden sollen in eine neue Liste einfügst und dann über diese Liste iterierst und mit remove(object) in der eigentlichen liste rauslöscht.

Beispiel:
Java:
for(Object o : list){
if (remove){
removeList.add(o);
}
}

for(Object o : removeList){
list.remove(o);
}

Liebe Grüße,
Jonas Rudolph

P.s.: Huch, da war jemand schneller =D
 
Zuletzt bearbeitet:

eRaaaa

Top Contributor
Nur der Vollständigkeit halber:
jonas.r hat gesagt.:
Während du über eine Liste iterierst, kannst du diese nicht modifizieren, also Elemente aus ihr löschen oder hinzufügen. Du bekommst dann eine CurrentModificationException.

Das stimmt nur begrenzt, es kommt drauf an.
http://www.java-forum.org/errors-exceptions/3583-haeufige-errors-exceptions-warnings.html#post701853
Mit dem ListIterator und dessen remove-Methode ginge das schon

Ein weiterer Vorschlag ganz ohne zwei mal iterieren oder etwas löschen zu müssen wäre der Gebrauch eines Set`s

Java:
		List<String> stringlist = new ArrayList<>(Arrays.asList("A","B","C","D","A","B"));
		Set<String> stringset = new HashSet<>();  //oder LinkedHashSet etc.
		for (String string : stringlist) {
			if(!stringset.add(string)){
				System.out.println("Duplikat: "+string); // rufe damit deine Methode auf
			}
		}
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
M WSDL: Doppelte Typenames (Keine Verwendung möglich) Allgemeine Java-Themen 5
X Ermittlung eines doppelte Paars mit Streams Allgemeine Java-Themen 50
J In einem Set doppelte Elemente erzeugen Allgemeine Java-Themen 4
Sogomn Best Practice "Doppelte" Methoden Allgemeine Java-Themen 3
L Doppelte eintraege im Stringbuffer löschen Allgemeine Java-Themen 4
J Doppelte Buchstaben löschen - letztes Wort macht er nicht Allgemeine Java-Themen 2
F Doppelte Datensätze zusammenführen Allgemeine Java-Themen 12
B Collections TreeSet/TreeMap, doppelte Einträge zulassen ? Allgemeine Java-Themen 11
Q "Doppelte" Einträge einer Liste entfernen Allgemeine Java-Themen 14
S Doppelte Werte in Listen,Vectoren etc suchen Allgemeine Java-Themen 2
R Vererbung - doppelte Paint-Methode Allgemeine Java-Themen 4
A ArrayListe :Doppelte entfernen -> keine Referenzen Allgemeine Java-Themen 26
D Geht es auch schneller doppelte Einträge zu löschen? Allgemeine Java-Themen 23
m@nu doppelte daten im speicher? Allgemeine Java-Themen 2
F [TableModel] Doppelte einträge finden (bzw. verhindern) Allgemeine Java-Themen 3
T INI - Einträge auslesen Allgemeine Java-Themen 6
L Dependency Injection für Baum-Einträge Allgemeine Java-Themen 9
B Suche passende Datenstruktur für 2 Einträge Allgemeine Java-Themen 19
K JFreeChart - Einträge in DomainAxis anpassen Allgemeine Java-Themen 2
N Input/Output Verhindern, dass log-Einträge auf Console erscheinen Allgemeine Java-Themen 2
D Startmenü Einträge erstellen Allgemeine Java-Themen 4
M Auf Einträge im Buffer warten Allgemeine Java-Themen 7
V Java-Objekt. wie groß maximal ? anzahl der einträge Allgemeine Java-Themen 4
G List- Einträge löschen Allgemeine Java-Themen 3
F Einzelne Einträge im Array als konstant festlegen Allgemeine Java-Themen 2
T Kontextmenü Einträge Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben