Windows Azure Cloud Storage ermöglicht es Ihnen bereits ab 0,10€ pro GB/Monat die Vorteile der Cloud zu nutzen.
Willkommen bei dotnet-snippets.de! Snippet hinzufügen Login Registrieren
Snippets in der Datenbank: 1551 | Anzahl registrierter User: 1841 | Besucher online: 201
Hauptmenü
Home
Top Ten
Zufälliger Snippet
FAQs
.NET Community
dotnet-forum.de
dotnet-kicks.de
Social

RSS Feeds
Rss Alle Snippets
Rss C#
Rss VB.NET
Rss C++
Rss ASP.NET
Partner
Member of Microsoft Community Leader/Insider Program (CLIP)

Doppelte Arrayeinträge mit linearem Aufwand entfernen


Autor: Tim Hartwig
Sprache: VB.NET
Bewertung:
8.69 (3 votes)
Anzahl der Aufrufe: 11564
  
Kick it on dotnet-kicks.de  

Beschreibung:

Diese Funktion entfernt alle doppelten Einträge aus einem List(Of String) Array mit linearem Aufwand.
Das heißt das der Aufwand beim entfernen von doppelten Einträgen aus einem Array mit mehreren tausend Einträgen nur linear ansteigt statt Quadratisch. Wie hier bei diesem Snippet Snippet noch aus VB6 Zeiten:
http://dotnet-snippets.de/dns/doppelte-eintraege-aus-arraylist-loeschen-SID121.aspx

Vielen Dank an herbivore für den Hinweis. Ich wusste nicht das das mit Dictionaries so schnell geht.

PS: Was die Geschwindigkeit angeht (bei 10.000 Einträgen):
Mit quadratischem Aufwand: 2000ms
Mit linearem Aufwand: 7ms
Bei noch mehr Einträgen würde sich der Zeitfaktor noch um ein vielfaches erhöhen!


Abgelegt unter: Array, List.



Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
''' <summary>
''' Diese Funktion löscht mit linearem Aufwand doppelte Einträge aus einem List(Of T) Array
''' </summary>
''' <param name="List">Das Array dessen doppelte Einträge gelöscht werden sollen</param>
Public Function RemoveDoubleItems(ByVal List As List(Of String)) As List(Of String)
    Dim KeyList As New Generic.Dictionary(Of String, String)
    Dim NewList As New List(Of String)

    For Each Item As String In List
        If KeyList.ContainsKey(Item) = False Then
            KeyList.Add(Item, String.Empty)
            NewList.Add(Item)
        End If
    Next
    Return NewList
End Function
Sie haben Fragen zu diesem Snippet oder brauchen Hilfe bei der .NET Entwicklung?
Freundliche und kompetente Entwickler helfen Ihnen gern weiter im Forum für .NET Entwicklung.



Kommentare:
(Zum Schreiben von Kommentaren bitte anmelden.)

Hans-Joachim me0ner schrieb am:  17.01.2010 05:36:50

Kann jetzt mit VS 2008 auch so implementiert werden:

Public Function RemoveDoubleItems(Of T)(ByVal IList(Of T)) As List(Of T)
Dim hs As New HashSet(Of T)

Hans-Joachim me0ner schrieb am:  17.01.2010 05:54:11

Kann jetzt mit VS 2008 auch so implementiert werden:

Public Function RemoveDoubleItems(Of T)(ByVal MyList As IList(Of T)) As List(Of T)
Dim hs As New HashSet(Of T)
hs.UnionWith(MyList.AsEnumerable)
Return hs.ToList
End Function

Ob dieser Code gleich schnell oder schneller ist, müsste erst noch überprüft werden.


Diese Snippets könnten für Sie interessant sein:
[VB.NET] Doppelte Einträge aus Arraylist löschen
[C#] Convert an ArrayList into an array
[C#] String in Byte Array und zurück wandeln
[C#] Bitmap in Byte Array schreiben
[C#] Arraylist in Textdatei schreiben
[C#] Wandelt ein Bytearray in einen Binärstring
[C#] BubbleSort Verfahren / Algorithmus
[VB.NET] Dateien nach Datum sortieren
[C#] Typ der Elemente in einem Array herausfinden
[VB.NET] Rows eines DataGridView in ein String-Array konvertieren
[VB.NET] String in Byte Array und zurück wandeln
[VB.NET] Listen, Arrays, Strings konvertieren
[VB.NET] Textdatei lesen und schreiben (String, StringArray, etc...)
[VB.NET] List all controls by using the name of the controls
[C#] Datei einlesen und als ArrayList jede Zeile zurückliefern
[C#] Eine allgemeine Liste (IEnumerable) in ein Array umwandeln
[C#] long in ein byte-Array kopieren
[C#] Byte-Array in Struktur kopieren
[C#] Array zur Laufzeit erweitern
[C#] Kleine Array-Erweiterung
[VB.NET] Doppelte Eintäge löschen
[C#] SortingHelper - MoveUpInList & MoveDownInList
[C#] Duplikate aus einer IEnumerable entfernen
[C#] Zufallszahlen, die sich nicht wiederholen
[C#] SortableBindingList
[C#] Einträge in ListView verschieben
[C#] Liste mit int array zu Liste mit string array
[VB.NET] Berechnet den Durchschnittswert von grossen Zahlenlisten
[C#] Geschachtelte Methode zur String-Bearbeitung
[VB.NET] File List
[C#] Liste durchsuchen
[C#] SystemIconsImageListWrapper
[C#] WatchedList
[C#] C# Ordner auslesen und in Liste speichern "rekursiv"

schlecht sehr gut
1 2 3 4 5 6 7 8 9 10
Nur angemeldete User können Snippets bewerten.