Junior
Kas yra HashMap ir Set, ir kada geriausia juos naudoti?
sobes.tech AI
Atsakymas iš AI
HashMap – tai raktų ir reikšmių porų saugykla. Raktai yra unikalūs, o reikšmės gali kartotis. Naudoja maišą (hashing) greitam prieigos (vidutiniškai O(1)) prie elementų pagal raktą.
Set – tai unikalių elementų kolekcija. Nenurodo saugojimo tvarkos, jei nėra naudojama konkreti įgyvendinimo forma (pvz., LinkedHashSet). Operacijos pridėjimas, pašalinimas ir elemento buvimo patikrinimas vidutiniškai vykdomi per O(1). Yra įvairių įgyvendinimų, pvz.,
HashSet: neapibrėžia elementų tvarkos.LinkedHashSet: išsaugo elementų pridėjimo tvarką.TreeSet: saugo elementus surūšiuotoje tvarkoje.
Kada naudoti:
- HashMap:
- Kai reikalingas efektyvus paieška, įterpimas ar ištrynimas pagal raktą.
- Laikyti susietus duomenis (pvz., žodyną).
- Greitai patikrinti, ar yra reikšmė pagal raktą.
- Set:
- Kai reikia saugoti tik unikalius elementus.
- Efektyviai patikrinti, ar kolekcijoje yra elementas.
- Atlikti rinkinių operacijas (sujungimas, sankirta).
HashMap pavyzdys:
// HashMap sukūrimas
HashMap<String, Integer> amžius = new HashMap<>();
// Elementų pridėjimas
amžius.put("Alice", 30);
amžius.put("Bob", 25);
amžius.put("Charlie", 35);
// Reikšmės gavimas pagal raktą
int BobAmžius = amžius.get("Bob"); // BobAmžius = 25
// Raktų buvimo patikrinimas
boolean turiAlice = amžius.containsKey("Alice"); // turiAlice = true
HashSet pavyzdys:
// HashSet sukūrimas
HashSet<String> vardai = new HashSet<>();
// Elementų pridėjimas
vardai.add("Alice");
vardai.add("Bob");
vardai.add("Charlie");
vardai.add("Alice"); // nepridės, nes Alice jau yra
// Elemento buvimo patikrinimas
boolean turiBob = vardai.contains("Bob"); // turiBob = true
// Pereiti per elementus
for (String vardas : vardai) {
System.out.println(vardas);
}