A Collention névtér olyan osztályokat és interfészeket tartalmaz, amelyek különböző gyűjteményeket definiálnak.
Megkülönböztetünk objektum és template alapú gyűjteményeket:
FONTOS: Az objektum alapú gyűjtemények nem másolják le az objektumokat, csak az objektumokra mutató mutatókat tárolnak. Ne helyezzünk stack változókat a gyűjteményekbe!
A template alapú gyűjteményeket általában primitív típusú adatok tárolására használjuk.
Az ICollection az alapinterfésze az összes gyűjtemény osztálynak.
Egy ICollection reprezentálja objektumok egy gyűjteményét, és definiálja a méretét és a felsorolót:
Az IList egy olyan gyűjteményt definiál, ahol a különálló elemek külön-külön elérhetők egy index érték használatával. Műveletei: Add(),Remove(), Contains()
Az IMap és az IMultiMap kulcs-érték márok gyűjteményét jelenti. Minden IMap kulcs egyedi. Az IMultiMapek tartalmazhatnak egynél több elemet ugyanazzal a kulccsal. Metódusaik:
Az IEnumerator interfész egyszerű iterálást tesz lehetővé a gyűjteményen:
IMapEnumerator műveletei:
IBidirectionalEnumerator műveletei:
A MapEntry egy kulcs-érték párost tartalmaz. A MapEntry objektumokat az IMapEnumerator::GetCurrent() metódusa szolgáltatja.
Az ArrayList objektumok olyan gyűjteménye, amelyben az elemeken külön-külön, index alapján lehet elérni. A kapacitás jelöli az elemszámot, ahány elemet a lista tárolni tud. Újabb elemek hozzáadásával a kapacitás automatikusan növekszik ha erre szükség van, további szabad hely foglalással. Az alapértelmezett kapacitás 10.
A LinkedList objektumok gyűjteménye, amelyben az elemeket szekvenciálisan lehet elérni.
A HashMap egy olyan gyűjtemény, amelyben a kulcs-érték párok a kulcs hashkódja alapján vannak szervezve. Az alapértelmezett kapacitás 16. A HashMapek nem tartalmazhatnak duplikált kulcsokat. Minden kulcs egyetlen értékre képez le.
MultiHashMap esetében egyedi kulcs-érték párokról beszélünk. Ez azt jelenti, hogy sem a kulcsoknak, sem az értékeknek nem kell egyedinek lenniük, minden kulcs-érték pár csak egyszer szerepelhet.
A verem (Stack) egy FILO (First-in Last-out) típusú gyűjtemény. Ha a verem eléri a kapacitását, a kapacitás automatikusan növekszik, hogy további elemek kerülhessenek be.
A sor (Queue) egy FIFO gyűjtemény. A sorban tárolt objektumok a sor egyik végén kerülnek behelyezésre, és a másik végén eltávolításra. A kapacitás itt is automatikusan növekedhet.
Az IComparer interfész implementációk két objektum értékét hasonlítják össze, és egy egész számot adnak vissza eredményül. A nulla jelenti az egyezőséget. A negatív vagy pozitív szám azt jelenti, hogy az első érték a kettő közül rendre kisebb vagy nagyobb a másodiknál. Az alábbi implementációk adva vannak a badában:
A StringComparer osztály egyezőséget vizsgál. Ez azt jelenti, hogy a <0 és >0 érték jelentése megegyezik: a vizsgált elemek nem ekvivalensek.
K: Miért kell meghívnom a RemoveAll(true) eljárását egy objektum-alapú gyűjteménynek, mielőtt törölném a példányát?
V: