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