A BADA programozási nyelv

Gyűjtemények

Gyűjtemények

Fontosabb osztályok

Osztályok közötti kapcsolatok

Objektum alapú osztályok
Objektum alapú osztályok
Template alapú osztályok
Template alapú osztályok

Áttekintés

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:

  1. Az objektum alapú gyűjtemények az ICollention interfészből vannak származtatva, és az Object-ből származó objektumokat tartalmazhatnak.
  2. A template-alapú gyűjtők az ICollectionT<Type>-ból származnak, és primitív típusok tárolására alkalmasak.

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!

Stack variables

A template alapú gyűjteményeket általában primitív típusú adatok tárolására használjuk.

Primitives

Interfészek

Az ICollection az alapinterfésze az összes gyűjtemény osztálynak.

Interfaces

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:

IEnumerator

Az IEnumerator interfész egyszerű iterálást tesz lehetővé a gyűjteményen:

IMapEnumerator műveletei:

IBidirectionalEnumerator műveletei:

MapEntry

A MapEntry egy kulcs-érték párost tartalmaz. A MapEntry objektumokat az IMapEnumerator::GetCurrent() metódusa szolgáltatja.

MapEntry

ArrayList és LinkedList

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.

List Methods

HashMap és MultiHashMap

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.

MultiHashMap

Stack és Queue

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.

Stack

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.

Queue
Stack és Queue
Stack and Queue

IComparer

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.

FAQ

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: