69
No. 239 Marcel Gnoth, NTeam GmbH Datenstruktur en Das Framework der Jäger und Sammler

No. 239 Marcel Gnoth, NTeam GmbH Datenstrukturen Das Framework der Jäger und Sammler

Embed Size (px)

Citation preview

Page 1: No. 239 Marcel Gnoth, NTeam GmbH Datenstrukturen Das Framework der Jäger und Sammler

No. 239Marcel Gnoth, NTeam GmbH

DatenstrukturenDas Framework der Jäger und Sammler

Page 2: No. 239 Marcel Gnoth, NTeam GmbH Datenstrukturen Das Framework der Jäger und Sammler

Zur Person

Dipl. Inf. Marcel Gnoth, MCSDwww.gnoth.net

NTeam GmbH, Berlinwww.nteam.de

Senior Consultant, TrainerVB6, COM, DatenbankenVerteilte InformationssystemeUnd ....

.Net

Page 3: No. 239 Marcel Gnoth, NTeam GmbH Datenstrukturen Das Framework der Jäger und Sammler

Inhalt

EinführungInterfaces – der CollectionsCollections – Klassen im

FrameworkCollections – selbstgemacht Sortieren – im Framework AlternativenZusammenfassung

Page 4: No. 239 Marcel Gnoth, NTeam GmbH Datenstrukturen Das Framework der Jäger und Sammler

Einführung

Für Jäger und Sammler

Page 5: No. 239 Marcel Gnoth, NTeam GmbH Datenstrukturen Das Framework der Jäger und Sammler

Die gute alte Zeit ........

VB 6ArraysVB - Collection

Scripting RuntimeDictionary

Page 6: No. 239 Marcel Gnoth, NTeam GmbH Datenstrukturen Das Framework der Jäger und Sammler

.......und Heute ?

Array System.Array

CollectionDictionary

System.Collections...

Microsoft.VisualBasic.Collection

Page 7: No. 239 Marcel Gnoth, NTeam GmbH Datenstrukturen Das Framework der Jäger und Sammler

Collection – Klassen in .NetEine Menge von Klassen, die

verschiedene Interfaces implementieren

NamespacesSystem.CollectionsSystem.Collections.SpecializedMicrosoft.VisualBasic.Collection

Page 8: No. 239 Marcel Gnoth, NTeam GmbH Datenstrukturen Das Framework der Jäger und Sammler

Interfaces

Was müssen Collections bieten?

Page 9: No. 239 Marcel Gnoth, NTeam GmbH Datenstrukturen Das Framework der Jäger und Sammler

Interfaces ÜbersichtIEnumerable, IEnumeratorICollectionIListIDictionaryIComparableIComparer

IEnumerable

ICollection

IList IDictionary• Index • Key

• For Each Support

• Count, CopyTo

Page 10: No. 239 Marcel Gnoth, NTeam GmbH Datenstrukturen Das Framework der Jäger und Sammler

Interfaces I

IEnumerableFor Each SupportGetEnumerator()

ICollection Inherits IEnumerableAbzählen, Synchronisation, in Array

kopierenCopyTo(), Count,

IsSynchronized, SyncRoot

Page 11: No. 239 Marcel Gnoth, NTeam GmbH Datenstrukturen Das Framework der Jäger und Sammler

Interfaces IIIList Inherits ICollection,

IEnumerableMenge von Elementen, Zugriff über IndexIsReadOnly, IsFixedSizeAdd( ), Insert( )Contains(), IndexOf()Clear( ), Remove( ), RemoveAt( )

Page 12: No. 239 Marcel Gnoth, NTeam GmbH Datenstrukturen Das Framework der Jäger und Sammler

Interfaces IIIIDictionary Inherits ICollection,

IEnumerableEnthält DictionaryEntry – ElementeZugriff über Schlüssel IsFixedSize, IsReadOnly Keys, Values Add( ), Remove( ) Clear( ), Contains( )

Page 13: No. 239 Marcel Gnoth, NTeam GmbH Datenstrukturen Das Framework der Jäger und Sammler

Interfaces IV

IComparable, IComparerSortieren von ObjektenSpäter....

Page 14: No. 239 Marcel Gnoth, NTeam GmbH Datenstrukturen Das Framework der Jäger und Sammler

Collections

Wir schreiten zur Tat...

Page 15: No. 239 Marcel Gnoth, NTeam GmbH Datenstrukturen Das Framework der Jäger und Sammler

Übersicht Collections

0 - basiertViele haben:

Constructor der ICollection akzeptiertAddRange, RemoveRange

DataSourceIndexer

VB: myObj = Col.Item( 7 )C#: myObj = Col [ 7 ]

Page 16: No. 239 Marcel Gnoth, NTeam GmbH Datenstrukturen Das Framework der Jäger und Sammler

Übersicht I – Klassisch Name Index /

KeyKey eind.

Typ Bemerkung

Array Index - Object

0 basiert

ArrayList Index - Object

Ändert Größe dynamisch, IList

CollectionBase Index - Typed Selbstgemachte Collections

Hashtable Key Ja Object

IDictionary

DictionaryBase Key Ja Typed Selbstgemachte Dictionaries

ListDictionary Key Ja Object

Verkettete Liste, für Count <11

HybridDictionary Key Ja Object

Mix Hashtable + ListDictionary

SortedList Index + Key Ja Object

Sortiert nach Keys

Collection Index + Key Ja Object

„alte“ VB-Collection

NameValueCollect.

Index + Key Nein String Ein Key für mehrere Strings

NameObject-CollectionBase

Index + Key Nein Typed Eigene NameObjectCollections

StringCollection Index - String

StringDictionary Key Ja String

Page 17: No. 239 Marcel Gnoth, NTeam GmbH Datenstrukturen Das Framework der Jäger und Sammler

Übersicht II – Die Exoten

Name Typ Bemerkung

Queue Object First in First out

Stack Object Last in First out

BitArray Bits

BitVektor Bits 32 Bits in einer Struktur, schnell

DataSet Daten Keine Objektreferenzen

XMLDocument Daten Keine Objektreferenzen

Page 18: No. 239 Marcel Gnoth, NTeam GmbH Datenstrukturen Das Framework der Jäger und Sammler

ArraySystem.Array

Rank: Anzahl der DimensionenLength: Anzahl Elemente absolutGetLength(n): Anzahl Elemente einer

DimensionClone, Reverse

Kann Inhalt sortierenBinäre Suche auf sortierten ElementenGröße kann nicht verändert werdenImplementiert IList

Page 19: No. 239 Marcel Gnoth, NTeam GmbH Datenstrukturen Das Framework der Jäger und Sammler

ArrayErzeugen...

VB

C#

foreach (C#)

long[]row = {0,1,2,3};

long[]row = new long[4];

long[]row = new long[]{0,1,2,3};

Dim row()As Integer = {0,1,2,3}

Dim row(4)As Integer

foreach (int ID in colArr){ID=4;

}

Page 20: No. 239 Marcel Gnoth, NTeam GmbH Datenstrukturen Das Framework der Jäger und Sammler

ArrayList I

Eindimensionales ArrayKann wachsen und schrumpfen

Capacity, TrimToSizeAdd, AddRange, Insert, InsertRangeRemove, RemoveAt, RemoveRange

Kann Elemente sortieren, suchenZugriff über Index

Page 21: No. 239 Marcel Gnoth, NTeam GmbH Datenstrukturen Das Framework der Jäger und Sammler

ArrayList II

ArrayList.Adapter generiert Wrapper für IList ObjekteNutzen der ArrayList Methoden

Einsatz:Schnell, effizient, nur IndexSo oft wie möglich

DemoArrayList.Adapter

DemoArrayList.Adapter

Page 22: No. 239 Marcel Gnoth, NTeam GmbH Datenstrukturen Das Framework der Jäger und Sammler

HashTable

PropertiesCountKeys, Values

MethodenAdd, RemoveContainsKey, ContainsValue

Standard IDictionary Implementierung

Keine Sortierung

Page 23: No. 239 Marcel Gnoth, NTeam GmbH Datenstrukturen Das Framework der Jäger und Sammler

Hashtable

HashcodeFür jeden Eintrag wird Hashcode

berechnetAnhand des Hashcodes werden

Objekte einsortiertElemente sind nicht in Reihenfolge

ihres Einfügens angeordnetDurch Hashcode schnelles Suchen

Page 24: No. 239 Marcel Gnoth, NTeam GmbH Datenstrukturen Das Framework der Jäger und Sammler

HashtableDictionaryEntry

Values

foreach (DictionaryEntry e in colDic) { Console.Write("{0}/{1} ", e.Key,e.Value); }

foreach (CCustomer c in colCustDB.Values){Console.Write(c.Caption);

}

Page 25: No. 239 Marcel Gnoth, NTeam GmbH Datenstrukturen Das Framework der Jäger und Sammler

HashTableEinsatz:

Viele ObjekteZufällige / ungeordnete Zugriffe Zugriff über eindeutigen KeyLangsamer als ArrayList

Page 26: No. 239 Marcel Gnoth, NTeam GmbH Datenstrukturen Das Framework der Jäger und Sammler

ListDictionary

Einfache Implementierung von IDictionary

verkettete ListeWenig OverheadEmpfohlen für kleine Collections

(<11)Sehr langsam bei Count > 1000

Hashtable benutzen!!System.Collections.Specialized

Page 27: No. 239 Marcel Gnoth, NTeam GmbH Datenstrukturen Das Framework der Jäger und Sammler

HybridDictionary

Verwaltet kleine Mengen in ListDictionary

Wechselt automatisch zu Hashtable wenn Collection zu groß wird

System.Collections.Specialized

Page 28: No. 239 Marcel Gnoth, NTeam GmbH Datenstrukturen Das Framework der Jäger und Sammler

SortedList

Kreuzung aus Hashtable und ArrayIList und IDictionary

Sortiert nach den KeysZugriff über Key und IndexIntern zwei Arrays für Keys und

ValuesBisschen langsamer als HashtableSehr vielseitig

Page 29: No. 239 Marcel Gnoth, NTeam GmbH Datenstrukturen Das Framework der Jäger und Sammler

SortedList

PropertiesItem (Index / Key)CapacityKeys, Values

MethodenAdd, Remove, RemoveAtContainsKey, ContainsValueIndexOfKey, IndexOfValue

Page 30: No. 239 Marcel Gnoth, NTeam GmbH Datenstrukturen Das Framework der Jäger und Sammler

VisualBasic.CollectionIn C# Referenz auf

„Microsoft.VisualBasic“ setzen

In VB:

Verhält sich wie die gute alte VB Collection

Zugriff über Index oder KeyAchtung !!! 1 – basiert !!!

private Microsoft.VisualBasic.Collection colVB;

Dim colVB As Collection = New Collection()

Page 31: No. 239 Marcel Gnoth, NTeam GmbH Datenstrukturen Das Framework der Jäger und Sammler

VisualBasic.Collection

KompatibilitätsgründeLangsamer als ArrayList und

Hashtable

Page 32: No. 239 Marcel Gnoth, NTeam GmbH Datenstrukturen Das Framework der Jäger und Sammler

String Dictionary / CollectionSystem.Collections.Specialized

StringCollectionCollection für Strings

StringDictionaryHashtable für Strings

Page 33: No. 239 Marcel Gnoth, NTeam GmbH Datenstrukturen Das Framework der Jäger und Sammler

Queue / StackQueue

First In First OutEnqueue( ) / Dequeue( )

StackLast In First OutPush( ), Pop( )

Gemeinsame Eigenschaften / MethodenPeek( ), Contains( ) ToArray( ), Count

Können mit foreach durchlaufen werden

Page 34: No. 239 Marcel Gnoth, NTeam GmbH Datenstrukturen Das Framework der Jäger und Sammler

BitArray / BitVektor

Verwalten BitfelderBitVektor

Struktur, auf dem Stack (Wert-Typ)32 BitsEffizienter als BitArray

Logische Operationen auf den Bits

Dim myBA2 As New BitArray(5, False)Dim myBytes() As Byte = {1, 2, 3, 4, 5}Dim myBA3 As New BitArray(myBytes)Dim myBools() As Boolean = {True, False, True, True, True}Dim myBA4 As New BitArray(myBools)

Page 35: No. 239 Marcel Gnoth, NTeam GmbH Datenstrukturen Das Framework der Jäger und Sammler

NameValueCollectionKeys und Values sind StringsZugriff über Key oder IndexMehrere Values können den

gleichen Key habenKey nicht eindeutig!

Gruppiert nach Keysforeach (string k in nv.AllKeys)

Debug.WriteLine(k + ": " + nv[k]);

Key1: Anna,Barbara,ClaudiaKey2: Doris,ErnaKey3: Frida,Gabi,Helga,IngaKey4: Karla

DemoNameValueCol.

DemoNameValueCol.

Page 36: No. 239 Marcel Gnoth, NTeam GmbH Datenstrukturen Das Framework der Jäger und Sammler

Collections – selbstgemacht

So schmeckt es immer noch am besten!

Page 37: No. 239 Marcel Gnoth, NTeam GmbH Datenstrukturen Das Framework der Jäger und Sammler

Eigene Collection-KlassenAbstrakte Klassen im Framework

ReadOnlyCollectionBaseCollectionBaseDictionaryBaseNameObjectCollectionBase

Eigene Klassen davon ableiten (Vererbung)

Keine Aggregation mehr wie in VB6

oder alles selber machen

Page 38: No. 239 Marcel Gnoth, NTeam GmbH Datenstrukturen Das Framework der Jäger und Sammler

CollectionBaseArrayList für eigene typisierte

CollectionsÜber InnerList Property Zugriff

auf ArrayList MemberZugriff über Index

Page 39: No. 239 Marcel Gnoth, NTeam GmbH Datenstrukturen Das Framework der Jäger und Sammler

CollectionBase Implementierung

public class CCustomersColBase: CollectionBase { //Konstruktor der Basisklasse aufrufen public CCustomersColBase() : base() { } public void Add(CCustomer Cu) { this.InnerList.Add(Cu); } public void Remove(int x){ this.InnerList.RemoveAt(x); } public CCustomer this[int x] { //Indexer get {return (CCustomer) InnerList[x];} }}

foreach (CCustomer cu in colCustCB){ cu.Caption = "Hallo";}

Page 40: No. 239 Marcel Gnoth, NTeam GmbH Datenstrukturen Das Framework der Jäger und Sammler

DictionaryBase

Hashtable für eigene typisierte Collections

InnerHashtableZugriff über Key

Page 41: No. 239 Marcel Gnoth, NTeam GmbH Datenstrukturen Das Framework der Jäger und Sammler

DictionaryBase Implementierungpublic class CCustomersDicBase: DictionaryBase { //Konstruktor der Basisklasse aufrufen public CCustomersDicBase() : base() { } public void Add(CCustomer Cu, string k){ this.InnerHashtable.Add(k,Cu); } public void Remove(string Key){ InnerHashtable.Remove(Key); } //Support für spezielles foreach public System.Collections.ICollection Values { get {return this.InnerHashtable.Values;} } //Indexer public CCustomer this[string Key] { get {return (CCustomer) InnerHashtable[Key];} }}

Page 42: No. 239 Marcel Gnoth, NTeam GmbH Datenstrukturen Das Framework der Jäger und Sammler

DictionaryBase Zugriff

DictionaryEntry

ICollection Valuesforeach (CCustomer c in colCustDB.Values){

Console.Write (c.Caption);}

foreach (DictionaryEntry d in colCustDB){Console.Write (d.Key + d.Value);

}

Page 43: No. 239 Marcel Gnoth, NTeam GmbH Datenstrukturen Das Framework der Jäger und Sammler

NameObjectCollectionBase

Intern eine HashtableZugriff über Index oder KeyGruppiert nach KeysKeys sind StringsKeys können mehrfach vorkommen

Haben mehrere Objekte den gleichen Key, dann bei Zugriff über Key nur das erste Objekt

Über Index Zugriff auf alle Objekte

DemoNameObjColBase

DemoNameObjColBase

Page 44: No. 239 Marcel Gnoth, NTeam GmbH Datenstrukturen Das Framework der Jäger und Sammler

Indexer in C#

public CCustomer this[string Key] { get {return (CCustomer) this.BaseGet(Key);}}

public CCustomer this[int Index] { get {return (CCustomer) this.BaseGet(Index);}}

Page 45: No. 239 Marcel Gnoth, NTeam GmbH Datenstrukturen Das Framework der Jäger und Sammler

Indexer in VB.NetPublic ReadOnly Property Item(ByVal Index As Integer) _

As CCustomer Get Return CType(Me.InnerList(DBID), CCustomer) End GetEnd Property

Public ReadOnly Property Item(ByVal Key As String) _As CCustomer

Get Return CType(Me.InnerHashtable(Key), CCustomer) End GetEnd Property

Page 46: No. 239 Marcel Gnoth, NTeam GmbH Datenstrukturen Das Framework der Jäger und Sammler

Collection – selbstgemachtEigene Collection-Klasse definierenmuß Interfaces implementieren

Mindestens IEnumerable

public class Tokens : IEnumerable{ private string[] elements; public Tokens(string source, char[] delim){ elements = source.Split(delimiters); } public IEnumerator GetEnumerator() { return new TokenEnumerator(this); }}

Page 47: No. 239 Marcel Gnoth, NTeam GmbH Datenstrukturen Das Framework der Jäger und Sammler

IEnumerator IEnumerable.GetEnumerator

muß Enumerator zurückgeben

Kann selbst implementiert werdenNur in besonderen AnwendungsgebietenReihenfolge bei foreach verändern .............

Page 48: No. 239 Marcel Gnoth, NTeam GmbH Datenstrukturen Das Framework der Jäger und Sammler

IEnumerator - Beispiel

private class TokenEnumerator : IEnumerator { private int position = -1; private Tokens t; public TokenEnumerator(Tokens t) { this.t = t; } public bool MoveNext() { if (position < t.elements.Length - 1) { position++; return true;} else {return false;} } public void Reset() { position = -1; } public object Current { get {return t.elements[position];} }} Demo

Tokens-Collection

DemoTokens-Collection

Page 49: No. 239 Marcel Gnoth, NTeam GmbH Datenstrukturen Das Framework der Jäger und Sammler

Sortieren im Framework

Auf die Reihenfolge kommt es an!

Page 50: No. 239 Marcel Gnoth, NTeam GmbH Datenstrukturen Das Framework der Jäger und Sammler

SortierenArray, ArrayList und andere

können Objekte sortierenEntweder...

die Objekte implementieren selbst Interface IComparable

...oder...Extra Klassen für ein Objekt, die

IComparer implementierenImmer wenn es im Framework

etwas zu sortieren gibt, werden diese Interfaces benutzt

Page 51: No. 239 Marcel Gnoth, NTeam GmbH Datenstrukturen Das Framework der Jäger und Sammler

IComparableIn der Klasse selbst, eine Methode

CompareToArray.Sort ( )

public class CCustomer : IComparable {...//IComparable nach Caption int IComparable.CompareTo(object oCu){ CCustomer Cu = (CCustomer) oCu; return String.Compare

(this.Caption,Cu.Caption); }}

Page 52: No. 239 Marcel Gnoth, NTeam GmbH Datenstrukturen Das Framework der Jäger und Sammler

IComparerSeparate Klassen, eine Methode:

CompareArray.Sort (new CustSortByName)

DemoSortieren

DemoSortieren

public class CustSortByName : IComparer { public CustSortByName() { } public int Compare(object obj1,object obj2){ CCustomer cu1 = (CCustomer) obj1; CCustomer cu2 = (CCustomer) obj2; return String.Compare

(cu1.Nachname,cu2.Nachname); }}

Page 53: No. 239 Marcel Gnoth, NTeam GmbH Datenstrukturen Das Framework der Jäger und Sammler

Alternativen

Der andere Weg zur Sammlung:DataSetXMLDocument

Page 54: No. 239 Marcel Gnoth, NTeam GmbH Datenstrukturen Das Framework der Jäger und Sammler

ADO.Net DataSet

Sehr flexible DatenstrukturKann ohne Verbindung zu einer

Datenbank erzeugt werden

Page 55: No. 239 Marcel Gnoth, NTeam GmbH Datenstrukturen Das Framework der Jäger und Sammler

Dataset - Füllen

Mehrere Methoden zum Füllendt.Rows.Adddt.LoadDataRow

foreach (CCustomer xc in source_arrL){ dt.LoadDataRow( new object[] {xc.ID, xc.Key, xc.Nachname, xc.Vorname, xc.Land, xc.Alter}, true);}

Page 56: No. 239 Marcel Gnoth, NTeam GmbH Datenstrukturen Das Framework der Jäger und Sammler

DataSet - Zugriff

ZugriffDataTable.Rows.Contains;DataTable.Rows[Index]DataRow = DataTale.Rows.FindDataRow[ ] = DataTable.Select

foreach (int ID in Indicies){ cap = dt.Rows[ID].ItemArray[2].ToString();}

Page 57: No. 239 Marcel Gnoth, NTeam GmbH Datenstrukturen Das Framework der Jäger und Sammler

DataSet

gut für Relationale Datenkann mehrere Tabellen enthaltenkann Foreign Key und Unique

Constraints verwaltenErzeugen von Views Filtern und Sortierensehr mächtige Funktionen

DemoDataSet

DemoDataSet

Page 58: No. 239 Marcel Gnoth, NTeam GmbH Datenstrukturen Das Framework der Jäger und Sammler

XMLDocument

viel XML in .NetXML hat einen gewissen Overheadgut für hierarchische Datenleicht zu erzeugenkann leicht visualisiert werden

XSLTkomplexe Abfragesprache XPath

Page 59: No. 239 Marcel Gnoth, NTeam GmbH Datenstrukturen Das Framework der Jäger und Sammler

XMLDocumentErzeugen aus DataSet

Abfrage eines Knotens

Select über alle Knoten

XMLDocument xmlCustomers = new XmlDocument();xmlCustomers.LoadXml(dsCustomers.GetXml());

DemoDataSet

DemoDataSet

s = "Customer[Key = \"K10\"]";XmlNode xn = xmlCustomers.SelectSingleNode(s);

s = "/Customers/Customer[Land ='PERU']";XmlNodeList xl = xmlCustomers.SelectNodes(s);

Page 60: No. 239 Marcel Gnoth, NTeam GmbH Datenstrukturen Das Framework der Jäger und Sammler

Schlußfolgerungen

Und nun?

Page 61: No. 239 Marcel Gnoth, NTeam GmbH Datenstrukturen Das Framework der Jäger und Sammler

ZusammenfassungDie wichtigsten Typen

Array, ArrayList (Index)Hashtable (Key)SortedList (Index und Key)

Collectionbase, DictionaryBaseString Collection / Dictionary

Nicht vergessenDataSetXML-Document

Page 62: No. 239 Marcel Gnoth, NTeam GmbH Datenstrukturen Das Framework der Jäger und Sammler

Performance

Durchschnitt aus 3 TestsWer misst, misst Mist!

Garbage Collection schlägt ab und zu zu

Dadurch schwanken die Werte

Die richtige Auswahl des Collection – Typs ersetzt kein gutes Design!

Page 63: No. 239 Marcel Gnoth, NTeam GmbH Datenstrukturen Das Framework der Jäger und Sammler

Laden 10001.000 Objekte laden

0,0020,0040,0060,0080,00

100,00120,00140,00160,00180,00200,00

Arra

yFix

edLe

ngth

Arra

yLis

t

Que

ue (e

nque

ue)

Sta

ck (p

ush)

Has

hTab

le

Sor

tedL

ist

List

Dic

tiona

ry

Hyb

ridD

ictio

nary

Nam

edV

alue

Col

lect

ion

VB

Col

lect

ion

CC

ustD

icB

ase

Cus

tCol

Bas

e

Cus

tNam

edO

bjC

olB

ase

Stri

ngC

olle

ctio

n

Stri

ngD

ictio

nary

Dat

aset

(Loa

dDat

aRow

)

Dat

aset

(Row

s.A

dd)

XM

LDoc

umen

t (au

s

Tic

ks (m

s)

1.000 Objekte

Page 64: No. 239 Marcel Gnoth, NTeam GmbH Datenstrukturen Das Framework der Jäger und Sammler

Laden 30.00030.000 Objekte laden

0,00

500,00

1000,00

1500,00

2000,00

2500,00

Arr

ayFi

xedL

engt

h(S

etva

lue)

Arr

ayLi

st

Que

ue (e

nque

ue)

Sta

ck (p

ush)

Has

hTab

le

Sor

tedL

ist

List

Dic

tiona

ry

Hyb

ridD

ictio

nary

Nam

edV

alue

Col

lect

ion

VB

Col

lect

ion

CC

ustD

icB

ase

Cus

tCol

Bas

e

Cus

tNam

edO

bjC

olB

ase

Stri

ngC

olle

ctio

n(S

tring

s)S

tring

Dic

tiona

ry(S

tring

s)

Dat

aset

(Loa

dDat

aRow

)

Dat

aset

(Row

s.A

dd)

XM

LDoc

umen

t (au

sD

atas

et)

Tick

s (m

s)

Page 65: No. 239 Marcel Gnoth, NTeam GmbH Datenstrukturen Das Framework der Jäger und Sammler

Zufälliger ZugriffZufälliger Zugriff (30.000)

0,00

100,00

200,00

300,00

400,00

500,00

Arr

ay (

Index)

Arr

ayLis

t (I

ndex)

Queue (

Dequeue)

Sta

ck (

Pop)

HashT

able

(K

ey)

HashT

able

(C

onta

insK

ey)

Sort

edLis

t (K

ey)

Sort

edLis

t (G

etB

yIn

dex)

Sort

edLis

t (C

onta

insK

ey)

HybridD

ictio

nary

(K

ey)

HybridD

ictio

nary

Nam

eV

alu

eC

olle

ctio

n (

Index)

Nam

edV

alu

eC

olle

ctio

n (

Key)

Nam

eV

alu

eC

olle

ctio

nV

B-C

olle

ctio

n (

Index)

VB

-Colle

ctio

n (

Key)

CC

usto

mers

Dic

Base (

Key)

CC

usto

mers

ColB

ase (

Index)

CC

ustu

mers

Nam

eO

bjC

olB

ase

CC

ustu

mers

Nam

eO

bjC

olB

ase

Str

ingC

olle

ctio

n (

Index)

Str

ingD

ictio

nary

(K

ey)

Data

set (R

ow

s[Index])

Data

set (R

ow

s.F

ind)

Data

set (S

ele

ct+

Sort

=#196

XM

LD

ocum

ent

XM

LD

ocum

ent

Tic

ks (

ms)

Page 66: No. 239 Marcel Gnoth, NTeam GmbH Datenstrukturen Das Framework der Jäger und Sammler

Zufälliger Zugriff (30.000)

Array (Index) 00,00

ArrayList (Index) 10,00

Queue (Dequeue) 03,33

Stack (Pop) 03,33

HashTable (Key); 43,33

HashTable (ContainsKey) 26,67

SortedList (Key) 387,67

SortedList (GetByIndex) 03,33

SortedList (ContainsKey) 377,33

HybridDictionary (Key) 37,00

HybridDictionary (ContainsKey) 30,00

NameValueCollection (Index) 20,00

NamedValueCollection (Key) 70,00

NameValueCollection (GetKey) 10,00

Page 67: No. 239 Marcel Gnoth, NTeam GmbH Datenstrukturen Das Framework der Jäger und Sammler

Zufälliger Zugriff (30.000)VB-Collection (Index) 50,00

VB-Collection (Key) 130,00

CCustomersDicBase (Key) 36,67

CCustomersColBase (Index) 10,00

CCustumersNameObjColBase (Index) 13,33

CCustumersNameObjColBase (Key) 66,67

StringCollection (Index) 10,00

StringDictionary (Key) 73,33

Dataset (Rows[Index]) 104,00

Dataset (Rows.Find) 397,00

Dataset (Select+Sort=#196 Rows) 220,33

XMLDocument (SelSingleNode,#150) 16.066,67

XMLDocument (SelectNodes=#196) 0,00

Page 68: No. 239 Marcel Gnoth, NTeam GmbH Datenstrukturen Das Framework der Jäger und Sammler

Links

Code zum Vortraghttp://www.gnoth.net/BASTA/Feb02.ht

m

Dr. GUI von http://msdn.microsoft.com/ In der MSDN nach „Dr. GUI.NET #4“

suchen

Page 69: No. 239 Marcel Gnoth, NTeam GmbH Datenstrukturen Das Framework der Jäger und Sammler

Fragen?

Uff...Uff...