Junior
HashMap və Set nədir və hansı hallarda onları istifadə etmək daha yaxşıdır?
sobes.tech Süni İntellekt
AI-dan cavab
HashMap - açar-dəyər cütlərini saxlayan kolleksiyadır. Açarlar unikal, dəyərlər isə təkrarlana bilər. O, açar vasitəsilə elementlərə sürətli (orta hesabla O(1)) giriş üçün hashing istifadə edir.
Set - unikal elementləri saxlayan kolleksiyadır. Saxlama sırasını təmin etmir, əgər xüsusi bir tətbiq (məsələn, LinkedHashSet) istifadə olunmazsa. Elementlərin əlavə olunması, silinməsi və mövcudluğunun yoxlanması ümumiyyətlə O(1) vaxt alır. Müxtəlif tətbiqlər mövcuddur, məsələn:
HashSet: elementlərin sırasını təmin etmir.LinkedHashSet: əlavə olunma sırasını saxlayır.TreeSet: elementləri sıralı şəkildə saxlayır.
Nə zaman istifadə etmək:
- HashMap:
- Sürətli axtarış, əlavə və ya silmə lazım olduqda.
- Əlaqəli məlumatların (məsələn, lüğət) saxlanması üçün.
- Açar ilə dəyərin mövcudluğunu sürətlə yoxlamaq üçün.
- Set:
- Yalnız unikal elementlərin saxlanması lazım olduqda.
- Elementin kolleksiyada olub-olmadığını effektiv yoxlamaq üçün.
- Kümələr üzərində əməliyyatlar (birlik, kəsişmə) üçün.
HashMap istifadə nümunəsi:
// HashMap yaradılması
HashMap<String, Integer> yaşlar = new HashMap<>();
// Elementlərin əlavə olunması
yaşlar.put("Alice", 30);
yaşlar.put("Bob", 25);
yaşlar.put("Charlie", 35);
// Açar ilə dəyər əldə etmək
int BobYaşı = yaşlar.get("Bob"); // BobYaşı = 25
// Açarın mövcudluğunu yoxlamaq
boolean AliceVar = yaşlar.containsKey("Alice"); // AliceVar = true
HashSet istifadə nümunəsi:
// HashSet yaradılması
HashSet<String> adlar = new HashSet<>();
// Elementlərin əlavə olunması
adlar.add("Alice");
adlar.add("Bob");
adlar.add("Charlie");
adlar.add("Alice"); // Əlavə olunmayacaq, çünki artıq mövcuddur
// Elementin mövcudluğunu yoxlamaq
boolean BobVar = adlar.contains("Bob"); // BobVar = true
// Elementlər üzərində dövr
for (String ad : adlar) {
System.out.println(ad);
}