Een set is een verzameling waarin elke waarde uniek is. Voeg hetzelfde item twee keer toe en het blijft simpelweg één keer in de set staan; dubbele waarden zijn niet toegestaan. De meeste sets garanderen ook geen vaste volgorde, want hun taak draait om lidmaatschap, niet om volgorde.
Zie het als een gastenlijst aan de deur. Het maakt niet uit hoe vaak een naam is opgeschreven; iemand staat op de lijst of niet, en telt maar één keer mee. Dat is precies wat een set doet, en daarom is het een van de nuttigste bouwstenen onder de gangbare datastructuren. Het andere grote voordeel is snelheid: controleren of iets al in een set zit, gaat bijna direct, zelfs bij miljoenen waarden, dankzij de manier waarop het onderliggende algoritme de waarden opslaat. Een lijst moet voor diezelfde vraag al zijn items één voor één aflopen, dus hoe groter hij wordt, hoe trager de controle.
Daardoor zijn sets een logische keuze om dubbele waarden weg te halen. Gooi een rommelige lijst e-mailadressen in een set en de herhalingen verdwijnen vanzelf, het kernidee achter deduplicatie. Sets zijn ook sterk als je twee groepen wilt vergelijken: welke gebruikers in beide zitten, welke tags in het ene product staan maar niet in het andere. Bewerkingen als unie, doorsnede en verschil doen dat werk in één regel.
Eén kanttekening is goed om te onthouden. Omdat de meeste sets de volgorde weggooien, kun je niet vragen om “het derde item” of leunen op de volgorde waarin je dingen toevoegde. Telt volgorde wel, dan is een lijst het juiste gereedschap. En de waarden die je opslaat moeten van het soort zijn dat een set kan vergelijken, dus gewone tekst en getallen passen meteen, terwijl complexere objecten soms extra werk vragen.
Bij TopDevs grijpen we naar sets zodra de logica van een klant afhangt van “zit dit er al in?”, omdat ze die controle zowel correct als snel maken.