Heute möchten wir Ihnen zeigen, wie man mit gleichbleibenden Aufwand schnell alle doppelten Einträge aus einer Liste entfernt. Der Datentyp selbst spielt hierbei keine Rolle, da dieser durch die neue Generic-Funktion von VB 2005 zur Laufzeit festgelegt wird. Erstellen wir uns zunächst einmal eine Liste vom Typ String mit mehrfach vorkommenden Einträgen: Dim MyList As New List(Of String) ' Liste mit 1000 Einträgen füllen For i As Integer = 1 To 1000 Dim n As Integer = Int(10 * Rnd() + 1) MyList.Add("Eintrag " & n.ToString) Next Als nächsten machen wir uns daran, eine universelle Funktion zu erstellen, die alle Duplikate einer übergebenen Liste mit beliebigem Datentyp ausfiltern: ' alle doppelten Einträge aus einer Liste entfernen Public Function DeleteDoublicates(Of Type)( _ ByVal oList As List(Of Type)) As List(Of Type) ' Neues List-Objekt, welches neu aufgebaut wird ' (ohne Duplikate!) Dim oResult As New List(Of Type) ' Dictionary erstellen Dim oDict As New Generic.Dictionary(Of Type, Type) ' Liste durchlaufen With oDict For Each oItem As Type In oList ' Falls Eintrag noch nicht im Dictionary existiert... If .ContainsKey(oItem) = False Then ' jetzt hinzufügen .Add(oItem, Nothing) ' und ebenfalls der Ergebnis-Liste hinzufügen oResult.Add(oItem) End If Next End With ' Dictionary zerstören oDict = Nothing ' Rückgabewert: Ergebnisliste = Liste ohne Duplikate Return oResult End Function Um nun alle doppelten Einträge aus unserer String-Liste zu löschen, rufen wir die Funktion wie folgt auf: ' alle doppelten Einträge entfernen MyList = DeleteDoublicates(Of String)(MyList) Um das Ganze auch testen zu können, schreiben wir den Inhalt in eine ListBox: ListBox1.Items.Clear ListBox1.Items.AddRange(MyList.ToArray) Das Löschen von Duplikaten funktioniert natürlich auch mit Integer-Listen: Dim MyNumList As New List(Of Integer) For i As Integer = 1 To 1000 Dim n As Integer = Int(10 * Rnd() + 1) MyNumList.Add(n) Next ' alle doppelten Einträge entfernen MyNumList = DeleteDoublicates(Of Integer)(MyNumList) Dieser Tipp wurde bereits 29.281 mal aufgerufen.
Anzeige
![]() ![]() ![]() (einschl. Beispielprojekt!) Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
vb@rchiv CD Vol.6 ![]() ![]() Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! Online-Update-Funktion Entwickler-Vollversionen u.v.m. Tipp des Monats Neu! sevCoolbar 3.0 ![]() Professionelle Toolbars im modernen Design! Mit sevCoolbar erstellen Sie in wenigen Minuten ansprechende und moderne Toolbars und passen diese optimal an das Layout Ihrer Anwendung an (inkl. große Symbolbibliothek) - für VB und MS-Access |
||||||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |