Zestawy rozmówBlog

Twoja wymarzona praca? Lets Git IT.
Interaktywna platforma przygotowująca do rozmów technicznych dla nowoczesnych programistów.

XGitHub

Platforma

  • Kategorie

Zasoby

  • Blog
  • O aplikacji
  • FAQ
  • Sugestie

Prawne

  • Polityka prywatności
  • Regulamin

© 2026 LetsGit.IT. Wszelkie prawa zastrzeżone.

LetsGit.IT/Kategorie/Struktury danych
Struktury danycheasy

Czym jest Set i kiedy go używasz?

Tagi
#set#deduplication#membership
Wróć do kategoriiPrzejdź do quizu

Odpowiedź

Set przechowuje unikalne wartości (bez duplikatów). Użyj go do szybkiego sprawdzania „czy element istnieje” i do usuwania duplikatów (np. unikalne ID użytkowników).

const ids = new Set<number>();
ids.add(42);
console.log(ids.has(42)); // true

Odpowiedź zaawansowana

Głębiej

Set to abstrakcyjna struktura danych oparta o jedną ideę: przechowuj unikalne wartości i odpowiadaj szybko na pytanie o przynależność (czy widziałem X?). W wielu językach jest to implementacja na bazie tablicy haszującej: średnio add/has/delete to O(1), ale w skrajnych przypadkach może spaść do O(n) (słabe hashowanie, wejście „złośliwe”, bardzo wysoki load factor).

Używaj Set, gdy:

  • Potrzebujesz deduplikacji (unikalne ID, tagi, e-maile).
  • Potrzebujesz szybkich membership-checków (role, uprawnienia, klucze cache).
  • Trzymasz visited w traversalach (BFS/DFS/Dijkstra) i nie chcesz O(n) sprawdzania w tablicy.

Przykłady

const users = ['a', 'b', 'a', 'c']
const unique = [...new Set(users)] // ['a', 'b', 'c']

const allowed = new Set(['admin', 'editor'])
const canEdit = allowed.has(role)

Uwagi językowe

  • Java: HashSet opiera się o hashCode() + equals(). Dla własnych obiektów implementuj oba kontrakty spójnie.
  • JS/TS: Set porównuje prymitywy po wartości, ale obiekty po tożsamości (dwa obiekty o tych samych polach nadal są różne).

Powiązane pytania

Mikroserwisy
At-least-once: jak uniknąć podwójnych efektów ubocznych u konsumenta?
#idempotency#deduplication#messaging
MongoDB
`$push` vs `$addToSet` — jaka jest różnica?
#mongodb#arrays#update
MongoDB
W update’ach MongoDB, co robi `$set`?
#mongodb#update

Typowe pułapki

  • Oczekiwanie deduplikacji obiektów „po polach” (Set tego nie robi).
  • Modyfikowanie obiektu w sposób, który wpływa na hashing/równość po dodaniu do setu.
  • Użycie Set, gdy potrzebujesz mapowania klucz -> wartość (wtedy Map).
#set
Java
HashSet vs TreeSet — jaka jest różnica?
#set#hashset#treeset