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);
}