Android'de, ilkel tiplerin eklenebildiği haritalar var. Bu konuda daha detaylı bilgi verebilir misin?
sobes.tech yapay zeka
AI'dan gelen yanıt
Evet, Android SDK'de, temel türlerle çalışmak için, standart HashMap<K, V>'ye kıyasla performans ve bellek tasarrufu sağlayan özel Map uygulamaları mevcuttur.
En yaygın olanlar şunlardır:
SparseIntArray:intanahtarlar veintdeğerler içeren çiftleri saklar.SparseLongArray:intanahtarlar velongdeğerler içeren çiftleri saklar.SparseBooleanArray:intanahtarlar vebooleandeğerler içeren çiftleri saklar.LongSparseArray<E>:longanahtarlar veEtüründe nesneleri saklar.
Bu sınıfların kullanımı avantajları:
- Bellek verimliliği: İç diziler kullanarak verileri saklarlar, böylece
Integer,Long,Booleangibi temel türler için nesne sarmalayıcıların oluşturulması veHashMap'in bağlı liste yapısının getirdiği ek maliyetlerden kaçınırlar. - Performans: Ekleme, alma ve silme işlemleri genellikle daha hızlıdır, özellikle çok sayıda öğe ile çalışırken, daha basit iç yapı ve temel anahtarlar için hashing'in önlenmesi sayesinde SparseArray durumunda.
SparseIntArray kullanım örneği:
// SparseIntArray oluşturma
SparseIntArray sparseArray = new SparseIntArray();
// Öğeleri ekleme
sparseArray.put(0, 100);
sparseArray.put(1, 200);
sparseArray.put(10, 300);
// Anahtar ile değer alma
int value = sparseArray.get(1); // value 200 olacak
// Varsayılan değer ile değer alma
int valueWithDefault = sparseArray.get(5, -1); // valueWithDefault -1 olacak
// Öğeyi anahtar ile silme
sparseArray.delete(10);
// Öğeler üzerinde yineleme
for (int i = 0; i < sparseArray.size(); i++) {
int key = sparseArray.keyAt(i);
int val = sparseArray.valueAt(i);
// key ve val işleme mantığı
}
Benzer şekilde, SparseLongArray, SparseBooleanArray ve LongSparseArray kullanılır. LongSparseArray, değerleri nesne olduğu için türü belirtmenizi gerektirir.
Standart HashMap ile özel Sparse haritalar arasındaki seçim, ihtiyaçlarınıza bağlıdır:
- Anahtarlar rastgele nesneler veya
intveyalongolmayan temel türler ise,HashMapkullanın. - Anahtarlar
intveyalongise ve değerler temel türler veyaLongSparseArraydurumunda nesneler ise, ve bellek ve performans verimliliği önemliyse, Sparse haritalar tercih edilmelidir.
Önemli not: Sparse haritalar çoklu iş parçacığı güvenli değildir. Çoklu iş parçacığı güvenliği gerekiyorsa, temel türler için nesne sarmalayıcılar ile ConcurrentHashMap kullanmayı düşünün. Ancak, çoğu durumda, Android uygulamasının UI iş parçacığında, bu yapılar sık kullanıldığından, iş parçacığı güvenliği sorun olmamaktadır.