Android-də primitiv tipləri əlavə edə bilən xəritələr mövcuddur. Bu barədə daha ətraflı danışa bilərsinizmi?
sobes.tech Süni İntellekt
AI-dan cavab
Bəli, Android SDK-də primitiv tiplərlə işləmək üçün, standart HashMap<K, V> ilə müqayisədə performans və yaddaş qənaətinə yönəlik ixtisaslaşdırılmış Map tətbiqləri mövcuddur.
Ən çox istifadə olunanlar:
SparseIntArray:intaçarları vəintdəyərləri cütlər şəklində saxlayır.SparseLongArray:intaçarları vəlongdəyərləri cütlər şəklində saxlayır.SparseBooleanArray:intaçarları vəbooleandəyərləri cütlər şəklində saxlayır.LongSparseArray<E>:longaçarları vəEtipli obyektləri saxlayır.
Bu siniflərin istifadəsinin üstünlükləri:
- Yaddaş səmərəliliyi: Daxili massivlərdən istifadə edirlər, bu da
Integer,Long,Booleankimi primitiv tiplər üçün obyektlərin yaradılması vəHashMap-in əlaqəli siyahı strukturunun əlavə xərclərindən qaçınır. - Performans: Əlavə etmə, əldə etmə və silmə əməliyyatları ümumiyyətlə daha sürətlidir, xüsusən çox sayda elementlə işləyərkən, daha sadə daxili struktur və primitiv açarlar üçün hashləmənin qarşısını almaq sayəsində.
SparseIntArray istifadə nümunəsi:
// SparseIntArray yaradılması
SparseIntArray sparseArray = new SparseIntArray();
// Elementlərin əlavə olunması
sparseArray.put(0, 100);
sparseArray.put(1, 200);
sparseArray.put(10, 300);
// Açar ilə dəyər əldə etmək
int value = sparseArray.get(1); // dəyər 200 olacaq
// Standart dəyər ilə dəyər əldə etmək
int valueWithDefault = sparseArray.get(5, -1); // dəyər -1 olacaq
// Elementi açar ilə silmək
sparseArray.delete(10);
// Elementlər üzərində dövr etmək
for (int i = 0; i < sparseArray.size(); i++) {
int key = sparseArray.keyAt(i);
int val = sparseArray.valueAt(i);
// key və val işləmə loqikası
}
Eynilə, SparseLongArray, SparseBooleanArray və LongSparseArray istifadə olunur. LongSparseArray obyekt tipini göstərməyi tələb edir, çünki onun dəyərləri obyektlərdir və primitiv tiplər deyil.
Standart HashMap və ixtisaslaşdırılmış Sparse xəritələr arasındakı seçim tələblərinizə bağlıdır:
- Əgər açarlar hər hansı obyektlər və ya
intvə yalongolmayan primitiv tiplərdirsə,HashMapistifadə edin. - Əgər açarlar
intvə yalongvə dəyərlər primitiv tiplər və yaLongSparseArrayhalında obyektlərdirsə, və yaddaş və performans vacibdirsə, Sparse xəritələr daha üstün olacaq.
Qeyd etmək lazımdır ki, Sparse xəritələr çoxnüvəli təhlükəsiz deyil. Əgər çoxnüvəli təhlükəsizlik lazımdırsa, primitiv tiplər üçün obyekt sarmalayıcılar ilə ConcurrentHashMap istifadə etməyi düşünün. Lakin, Android tətbiqinin UI axınında, bu strukturlar tez-tez istifadə olunduğundan, çoxnüvəli təhlükəsizlik problem olmur.