Zwar braucht die Dictionary<T, K> weniger Zeit beim hinzufügen/ löschen von Werten, braucht die SortedList doch weniger Ramkapazitäten und ist im großen und ganzen schneller. Deutlich langsamer ist die Hashtable und SortedDictionary.
<T> = Typenparameter, erwartet wird ein Datentyp als Parameter. Beispiel string, int, object,…
<V, K> = siehe <T>, jedoch wegen besserer Lesbarkeit stellt dieser Typenparameter den Wert des Value bzw. Key da.
List<T>
1 |
List<string> l = new List<string>(); |
SortedList<V, K>
1 2 3 4 |
SortedList<string,object> sl = new SortedList<string, object>(); sl.Add("Hallo",2); sl.Add("Tschüss",true); sl.Add("Liste",l); |
Beinhaltet einen Key und Value. Über den Key lässt sich das Value herausfinden. Beispiel:
1 |
sl["Tschüss"] |
liefert den Wert Boolean Wert True
Dictionary<V, K>
1 2 3 4 |
Dictionary<string,object> d = new Dictionary<string, object>(); d.Add("Hallo", 2); d.Add("Tschüss", true); d.Add("Liste", l); |
ArrayList (Object)
1 2 3 4 |
ArrayList al = new ArrayList(); al.Add("Hallo"); al.Add(1234); al.Add(true); |
Hashtable (Object K, Object V)
1 2 |
Hashtable h = new Hashtable(); h.Add(12,6); |
ObservableCollection
1 2 |
ObservableCollection<int> oc = new ObservableCollection<int>(); oc.Add(1234); |
Im Gegensatz zur List<T> nutzt die ObservableCollection die INotifyCollectionChanged Schnittstelle. Diese gibt eine Meldung, sobald sich in der Collection etwas geändert hat. Sehr Sinnvoll, wenn man diese Collection an ein Steuerelement per WPF binden möchte, aktualisiert sich das Element so automatisch. Ein Nachteil ist jedoch, dass man die Liste nicht aus der Liste suchen/sortieren kann. Hier kann man nachlesen, wie man dies doch mit einbauen kann -> Link
List<Tuble<T,A,B>
Bisher hatten wir immer nur die Möglichkeit über Key / Value ein Pärchen vom Eintrag zu bilden. Manchmal kommt man aber in die Situation wo man nicht das Key/Value Prinzip haben möchte, oder mehr als 2 Argumente übergeben möchte. Da kommt das seit .NET 4.0 eingeführte Tuble ins Spiel. Die einzelnen Einträge werden dann als Item1, Item2 usw. innerhalb des Eintrags geführt.
1 2 |
List<Tuple<double, DateTime>> tmp = new List<Tuple<double, DateTime>>(); tmp.Add(new Tuple<double, DateTime>(123,56d,DateTime.Now)); |
Quelle: http://blog.bodurov.com/Performance-SortedList-SortedDictionary-Dictionary-Hashtable/
Login