Android-да префикс типтерін қосуға болатын карталар бар. Бұл туралы толығырақ айта аласыз ба?
AI-дан жауап
sobes.tech AI
Иә, Android SDK-да примитивті типтермен жұмыс істеу үшін арнайы жүзеге асырылған Map түрлері бар, олар стандартты HashMap<K, V>-ға қарағанда өнімділік пен жадты үнемдеуге оңтайландырылған.
Ең кең тарағандары:
SparseIntArray:intкілттері менintмәндерін сақтайды.SparseLongArray:intкілттері менlongмәндерін сақтайды.SparseBooleanArray:intкілттері менbooleanмәндерін сақтайды.LongSparseArray<E>:longкілттері менEтипті объектілерді сақтайды.
Осы кластарды қолданудың артықшылықтары:
- Жад тиімділігі: Олар деректерді сақтау үшін ішкі массивтерді пайдаланады, бұл объектілерді (мысалы,
Integer,Long,Boolean) құру жәнеHashMapқұрылымындағы байланысты тізбекті тізімнің шығындарын болдырмайды. - Өнімділік: Қосу, алу және жою операциялары әдетте тезірек орындалады, әсіресе көп элементтермен жұмыс істегенде, себебі ішкі құрылымы қарапайым және
SparseArrayжағдайында хештеуді болдырмайды.
SparseIntArray қолданудың мысалы:
// SparseIntArray құру
SparseIntArray sparseArray = new SparseIntArray();
// Элементтерді қосу
sparseArray.put(0, 100);
sparseArray.put(1, 200);
sparseArray.put(10, 300);
// Кілт бойынша мәнді алу
int value = sparseArray.get(1); // value 200 болады
// Әдепкі мәнмен алу
int valueWithDefault = sparseArray.get(5, -1); // valueWithDefault -1 болады
// Элементті жою
sparseArray.delete(10);
// Элементтер бойынша қайталау
for (int i = 0; i < sparseArray.size(); i++) {
int key = sparseArray.keyAt(i);
int val = sparseArray.valueAt(i);
// key және val өңдеу логикасы
}
Ұқсас түрде SparseLongArray, SparseBooleanArray және LongSparseArray пайдаланылады. LongSparseArray объектілерді сақтайды, сондықтан оның мәндері объектілер болып табылады, ал LongSparseArray-да long типті кілттер мен мәндер.
Стандартты HashMap пен арнайы Sparse-карталар арасындағы таңдау сіздің талаптарыңызға байланысты:
- Егер кілттер ретінде кез келген объектілер немесе
intнемесеlongемес примитивтер қолданылса,HashMapпайдаланыңыз. - Егер кілттер
intнемесеlongболса, ал мәндер примитивтер немесеLongSparseArrayжағдайында объектілер болса, және жад пен өнімділік маңызды болса, Sparse-карталарды қолданған дұрыс.
Маңызды ескерту: Sparse-карталар ағын қауіпсіз емес. Егер ағын қауіпсіз жүзеге асыру қажет болса, ConcurrentHashMap-ты примитивтер үшін объектілер-оберткамен пайдаланыңыз. Алайда, Android қосымшасының UI ағынында жиі қолданылатын бұл құрылымдар үшін, ағын қауіпсіздігі әдетте маңызды емес.