Sobes.tech
Junior

Čo je HashMap a Set a v akých prípadoch je ich lepšie použiť?

sobes.tech AI

Odpoveď od AI

HashMap je kolekcia, ktorá ukladá páry kľúč-hodnota. Kľúče sú jedinečné a hodnoty sa môžu opakovať. Používa hashovanie pre rýchly (v priemere O(1)) prístup k prvkom podľa kľúča.

Set je kolekcia, ktorá ukladá jedinečné prvky. Nezaručuje poradie ukladania, pokiaľ sa nepoužije špecifická implementácia (napríklad LinkedHashSet). Operácie pridania, odstránenia a kontroly prítomnosti prvku sa zvyčajne vykonávajú v O(1). Existujú rôzne implementácie, napríklad:

  • HashSet: Nezaručuje poradie prvkov.
  • LinkedHashSet: Zachováva poradie pridania.
  • TreeSet: Ukladá prvky v zoradenom poradí.

Kedy použiť:

  • HashMap:
    • Keď je potrebné efektívne vyhľadávanie, vkladanie alebo mazanie podľa kľúča.
    • Na ukladanie asociatívnych dát (napríklad slovník).
    • Keď je potrebné rýchlo overiť, či hodnota existuje podľa kľúča.
  • Set:
    • Keď je potrebné ukladať iba jedinečné prvky.
    • Na efektívnu kontrolu, či prvok existuje v kolekcii.
    • Na operácie nad množinami (sjednotenie, prienik).

Príklad použitia HashMap:

// Vytvorenie HashMap
HashMap<String, Integer> vek = new HashMap<>();

// Pridanie prvkov
vek.put("Alice", 30);
vek.put("Bob", 25);
vek.put("Charlie", 35);

// Získanie hodnoty podľa kľúča
int vekBoba = vek.get("Bob"); // vekBoba = 25

// Kontrola, či kľúč existuje
boolean obsahujeAlice = vek.containsKey("Alice"); // obsahujeAlice = true

Príklad použitia HashSet:

// Vytvorenie HashSet
HashSet<String> mena = new HashSet<>();

// Pridanie prvkov
mena.add("Alice");
mena.add("Bob");
mena.add("Charlie");
mena.add("Alice"); // Nebude pridané, lebo už existuje

// Kontrola, či prvok existuje
boolean obsahujeBoba = mena.contains("Bob"); // obsahujeBoba = true

// Iterácia cez prvky
for (String meno : mena) {
    System.out.println(meno);
}