Hallo,
in einem ArrayList sind ca. 20 Nummern gespeichert.
Einige Nummern kommen mehrfach vor.
Kennt jemand eine Möglichkeit doppelte Nummern aus dem ArrayList zu löschen??
Danke und Gruß
Stefan
ja, am einfachsten mit 2 schleifen und ArrayList.Remove().
Hallo Immo,
eine Schleife - in der schleife prüfen ob nochmalsvorhanden - wenn ja remove wenn nein dann weiter
[edit]zu spät[/edit]
mfg
Hallo,
Erstmal Danke für eure Antworten!!
Habe nun folgendes versucht(vereinfacht nur für ein Element):
for (int i = 1; i < 20; i++)
{
if (MitarbeiterNr[0] == MitarbeiterNr[i])
{
MitarbeiterNr.RemoveAt(i);
}
}
Leider löscht er aber die doppelten Elemente nicht, obwohl das Element an der 0. Stelle mehrmals vorkommt.
Warum?
Hallo zusammen,
bei 20 Elementen ist die Remove-Methode ok. Für große Listen und viele zu löschenden Elemente ist sie nicht zu empfehlen, da sie quadratischen Aufwand hat. Mit linearem Aufwand geht es, wenn man von einer ArrayList alle Elemente außer den zu löschenden in eine neue ArrayList kopiert.
Unter .NET 2.0 sollte man ArrayList möglichst nicht mehr verwenden, sondern stattdessen List<T>.
herbivore
PS: Vermutlich sind die Elemente gleich aber nicht identisch. == testet normalerweise darauf, ob es sich um ein- und dasselbe Objekt handelt. Wenn das so ist, musst du == bzw. Equals für deine Klasse neu definieren.
Original von Immo
Leider löscht er aber die doppelten Elemente nicht, obwohl das Element an der 0. Stelle mehrmals vorkommt.Warum?
du musst i natürlich dekrementieren, wenn du etwas an der Stelle i löschst - ansonsten wird das nächste Element übergangen
beim löschen von elementen aus collections empfiehlt es sich, den zähler der for-schleife runterzuzählen. dann werden auch keine elemente übersprungen.