Hvad er forskellen mellem en ordbog og en liste i C #?


Svar 1:

En ordbog er et nøgleværdipar, mens en liste er en utallig samling af objekter

Dit spørgsmål er tilsyneladende almindeligt, da Google foreslog det med det samme. Tjek dette for en god forklaring.

Jeg vil lade tekniske forskelle til side og bare tale om, hvordan de adskiller sig i praksis. En liste er en boks til opbevaring af ting, hvor du ikke er meget interesseret i den rækkefølge, de er i. En ordbog er på den anden side en samling af værdier parret med en slags unik nøgle. Giv den nøglen, og den spytter den parrede værdi ud.

Lister er meget fleksible, men denne fleksibilitet kan komme til en pris af overheadbehandlingstiden. Du kan slå elementer op på en liste ved hjælp af en LINQ-forespørgsel og for små lister, der normalt er fine. Men en ordbog er specifikt designet til denne opgave, og derfor gør den MEGET hurtigere.


Svar 2:

En liste er en matrix som datastruktur, der gemmer dets indhold i sammenhængende hukommelse og tilbyder de samme asymptomatiske ydelsesegenskaber, som matriser gør. Derudover tilføjer Liste dynamisk realiserbarhed til den grundlæggende array-lignende funktionalitet, den udsætter. Det er vigtigt at bemærke, at liste ikke er en linket liste, men snarere en matrixlignende struktur (hvis du vil have en linket liste, er LinkedList din vej til).

En ordbog er en hash-baseret associativ matrix, der giver meget effektiv opslag, indsættelse og fjernelse af TValues ​​ved at kortlægge dem til en TKey. Du får adgang til elementer ved hjælp af den nøgle, du har tilknyttet den ønskede værdi, du kan ikke få adgang til elementer efter indeks. Rækkefølgen, i hvilken elementerne i samlingen er opregnet, er heller ikke stabil eller forudsigelig. For eksempel, hvis hver person har et unikt socialsikringsnummer, og du hurtigt vil være i stand til at finde den person, hvis nogen, i samlingen, der har et givet SSN, kan du muligvis bruge ordbog . I modsætning til listen kan du ikke hurtigt få adgang til den femte person i samlingen, men du kan få adgang til personen. .. hvis nogen ... der har 123–45–6789 som deres SSN meget hurtigt. På listen (hvis man antager, at det ikke er sorteret), skal hver person på listen undersøges for at se, om de har det ønskede SSN, ordbogen behøver ikke at gøre dette og er meget hurtigt til denne type forespørgsel.