Android ir kartes, kurās var pievienot primitivus tipus. Vai vari par to pastāstīt sīkāk?
sobes.tech AI
Atbilde no AI
Jā, Android SDK ir specializētas Map realizācijas, kas ir optimizētas veiktspējai un atmiņas ietaupīšanai salīdzinājumā ar standarta HashMap<K, V>.
Visbiežāk sastopamās:
SparseIntArray: glabāintatslēgas unintvērtības.SparseLongArray: glabāintatslēgas unlongvērtības.SparseBooleanArray: glabāintatslēgas unbooleanvērtības.LongSparseArray<E>: glabālongatslēgas unEtipa objektus.
Šo klases izmantošanas priekšrocības:
- Atmiņas efektivitāte: tās izmanto iekšējos masīvus datu glabāšanai, izvairoties no objektu ietīšanas izdevumiem primitives (
Integer,Long,Boolean) unHashMapsaistītās struktūras. - Veiktspēja: pievienošanas, iegūšanas un dzēšanas operācijas parasti ir ātrākas, īpaši ar lielu elementu skaitu, pateicoties vienkāršākai iekšējai struktūrai un izvairoties no hashēšanas
SparseArraygadījumā.
SparseIntArray lietošanas piemērs:
// `SparseIntArray` izveide
SparseIntArray sparseArray = new SparseIntArray();
// Elementu pievienošana
sparseArray.put(0, 100);
sparseArray.put(1, 200);
sparseArray.put(10, 300);
// Vērtības iegūšana pēc atslēgas
int value = sparseArray.get(1); // vērtība būs 200
// Vērtības iegūšana ar noklusējuma vērtību
int valueWithDefault = sparseArray.get(5, -1); // vērtība būs -1
// Elementa dzēšana pēc atslēgas
sparseArray.delete(10);
// Iterācija pa elementiem
for (int i = 0; i < sparseArray.size(); i++) {
int key = sparseArray.keyAt(i);
int val = sparseArray.valueAt(i);
// Apstrādes loģika
}
Tāpat tiek izmantoti SparseLongArray, SparseBooleanArray un LongSparseArray. LongSparseArray prasa norādīt objekta tipu, jo tās vērtības ir objekti, ne primitives.
Izvēle starp standarta HashMap un specializētajām Sparse kartēm ir atkarīga no jūsu prasībām:
- Ja atslēgas ir dažādi objekti vai primitives, kas nav
intvailong, izmantojietHashMap. - Ja atslēgas ir
intvailong, un vērtības ir primitives vai objekti,LongSparseArrayir efektīvāka.
Svarīgi atzīmēt, ka Sparse kartes nav thread-safe. Ja jums ir nepieciešama thread-safe realizācija, apsveriet ConcurrentHashMap ar apvalka objektiem primitives. Tomēr lielākajā daļā gadījumu Android UI pavedienā, kur šīs struktūras bieži tiek izmantotas, thread drošība nav problēma.