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 28.712 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv Vol.6 (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. |
sevOutBar 4.0 Vertikale Menüleisten á la Outlook Erstellen von Outlook ähnlichen Benutzer- interfaces - mit beliebig vielen Gruppen und Symboleinträgen. Moderner OfficeXP-Style mit Farbverläufen, Balloon-Tips, u.v.m. Tipp des Monats Januar 2025 Dieter Otter Zeilen einer MultiLine-TextBox ermitteln (VB.NET) Dieser Zipp zeigt, wie man die Zeilen einer MultiLine-TextBox exakt so ermitteln kann, wie diese auch in der TextBox dargestellt werden. Access-Tools Vol.1 Über 400 MByte Inhalt Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB |
||||||||||||||||
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. |