C#-ban milyen kollekciót érdemes használni, ha rengetegszer hozok létre új kollekciókat, illetve a létrehozottakhoz gyakran adok hozzá új elemeket?
Ennél azért kicsit pontosabb meghatározás kéne, hogy pontosan milyen formában akarod az adataidat tárolni, mire akarod használni.
Dictionary: kulcs-érték párok, hash tábla reprezentálja, beszúrási, keresési, törlési idő konstans. Kulcs egyedi.
HashSet: értékek halmaza, egy értéket csak egyszer lehet benne tárolni, szintén hash tábla reprezentálja, de a kulcs és az érték ugyanaz az objektum, nem rendezett. Beszúrási, keresési, törlési idő konstans.
A HashSet-nek és Dictionary-nek létezik Sorted változata, azaz rendezett kulcs szerint, viszont itt a komplexitás szinte minden műveletnél konstans helyett logaritmikus és hash tábla helyett bináris fa reprezentálja őket.
Van a Stack és Queue, ezek speckó szerkezetek, viszont minden művelet konstans komplexitású.
List: a leglassabb, mivel a beszúrás, törlés, keresés komplexitása is lineáris, viszont te határozhatod meg az elemek sorrendjét.
SortedList: rendezett, hasonló mint a list viszont a rendezettség miatt a keresés valamivel gyorsabb, logaritmikus komplexitású.
LinkedList: klasszikus láncolt lista, a beszúrás konstans időben történik, a keresés lineáris komplexitású.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!