Hoppa till innehåll

HashSet vs Dictionary vs Hashtable

↑

En HashSet<T> lagrar unika värden, exempelvis för medlemskap och mängdoperationer. En Dictionary<TKey,TValue> kopplar unika nycklar till värden. Hashtable är den äldre icke-generiska klassen med object-nycklar och -värden och bör sällan användas i ny kod. Begreppet hashtabell beskriver också själva datastrukturfamiljen, inte bara klassen Hashtable.

Varken HashSet<T> eller Dictionary<TKey,TValue> garanterar någon särskild uppräkningsordning. Förlita dig inte på deras interna buckets eller en specifik intern kapacitet.

C# | Example.cs
var onlineIds = new HashSet<int>();
Console.WriteLine(onlineIds.Add(42)); // True
Console.WriteLine(onlineIds.Add(42)); // False, already exists
Console.WriteLine(onlineIds.Contains(42)); // True
var players = new Dictionary<int, string>();
players[42] = "Ada";
if (players.TryGetValue(42, out string? name))
Console.WriteLine(name);

När: Välj HashSet<int> för unika ID:n och besökta noder, Dictionary<int,Player> för objektuppslag och List<T> när ordning och dubbletter är viktiga. Fallgrop: Om ett nyckelobjekts hash/likhet ändras medan det ligger i tabellen kan uppslag misslyckas.

Interaktiv hashtabell · HashSet och Dictionary