sebastianb
Erfahrenes Mitglied
Morgen Zusammen,
leider bin ich gerade auf ein Problem gestoßen, dass zwar an sich recht trivial ist aber ich mir noch nie wirklich Gedanken darüber gemacht habe.
Ich will lediglich aus einer HashMap Elemente rauslöschen deren Schlüssel auf eine gewisse Bedingung match.
Dieses Beispiel wirft wie zu erwarten einen java.util.ConcurrentModificationException, da ich ja durch das löschen des Elementes auch das Set über das ich gerade durchiteriere verändere.
Die einzigen beiden Lösungen wären aus meiner Sicht:
- die zu löschende Keys in eine seperate Liste speichern und anhand derere später die Werte aus der HashMap löschen
- Das Key-Set kopieren
Beide Möglichkeite sind aber für meinen Fall sehr ungeeignet, da ich mit sehr großen Datenmengen zu tun habe und so die Performance erheblich darunter leiden würde.
Für einen knackige Idee wäre ich sehr Dankbar!
Viele Grüße
Sebastian
leider bin ich gerade auf ein Problem gestoßen, dass zwar an sich recht trivial ist aber ich mir noch nie wirklich Gedanken darüber gemacht habe.
Ich will lediglich aus einer HashMap Elemente rauslöschen deren Schlüssel auf eine gewisse Bedingung match.
Java:
Map<Integer, String> test = new HashMap<Integer, String>();
test.put(1, "a");
test.put(2, "b");
test.put(3, "c");
test.put(4, "d");
test.put(5, "e");
test.put(6, "f");
for (Integer i : test.keySet())
{
if (i % 2 == 0)
{
test.remove(i);
}
}
Dieses Beispiel wirft wie zu erwarten einen java.util.ConcurrentModificationException, da ich ja durch das löschen des Elementes auch das Set über das ich gerade durchiteriere verändere.
Die einzigen beiden Lösungen wären aus meiner Sicht:
- die zu löschende Keys in eine seperate Liste speichern und anhand derere später die Werte aus der HashMap löschen
- Das Key-Set kopieren
Beide Möglichkeite sind aber für meinen Fall sehr ungeeignet, da ich mit sehr großen Datenmengen zu tun habe und so die Performance erheblich darunter leiden würde.
Für einen knackige Idee wäre ich sehr Dankbar!

Viele Grüße
Sebastian