Sobes.tech
Junior

Mi az a HashMap és Set, és milyen esetekben érdemes őket használni?

sobes.tech MI

Válasz az MI-től

HashMap egy olyan kollekció, amely kulcs-érték párokat tárol. A kulcsok egyediek, az értékek ismétlődhetnek. Hashelést használ a gyors (átlagosan O(1)) hozzáféréshez az elemekhez kulcs szerint.

Set egy olyan kollekció, amely egyedi elemeket tárol. Nem garantálja a tárolási sorrendet, kivéve, ha egy adott implementációt (pl. LinkedHashSet) használnak. Az elemek hozzáadása, törlése és létezésének ellenőrzése általában O(1) időben történik. Különböző implementációk léteznek, például:

  • HashSet: nem garantálja az elemek sorrendjét.
  • LinkedHashSet: megőrzi a hozzáadás sorrendjét.
  • TreeSet: rendezett sorrendben tárolja az elemeket.

Mikor használjuk:

  • HashMap:
    • Hatékony keresés, beszúrás vagy törlés kulcs szerint.
    • Asszociatív adatok (pl. szótár) tárolására.
    • Gyors ellenőrzés, hogy egy érték létezik-e kulcs szerint.
  • Set:
    • Csak egyedi elemek tárolására.
    • Hatékony ellenőrzés, hogy egy elem benne van-e a kollekcióban.
    • Halmaz műveletek (unió, metszet) végrehajtására.

HashMap példák:

// HashMap létrehozása
HashMap<String, Integer> kor = new HashMap<>();

// Elemek hozzáadása
kor.put("Alice", 30);
kor.put("Bob", 25);
kor.put("Charlie", 35);

// Érték lekérése kulcs alapján
int BobKor = kor.get("Bob"); // BobKor = 25

// Kulcs létezésének ellenőrzése
boolean tartalmazzaAlice = kor.containsKey("Alice"); // tartalmazzaAlice = true

HashSet példák:

// HashSet létrehozása
HashSet<String> nevek = new HashSet<>();

// Elemek hozzáadása
nevek.add("Alice");
nevek.add("Bob");
nevek.add("Charlie");
nevek.add("Alice"); // Nem adódik hozzá, mert már létezik

// Elem létezésének ellenőrzése
boolean tartalmazzaBob = nevek.contains("Bob"); // tartalmazzaBob = true

// Az elemek iterálása
for (String nev : nevek) {
    System.out.println(nev);
}