И така, трябва да използвам SparseArray вместо HashMap в името на ефективността:
Въпреки това SparseArray
не е част от JCF и не прилага Collection
нито List
нито Map
. HashMap
, от друга страна, имплементира < a href="http://docs.oracle.com/javase/6/docs/api/java/util/Map.html" rel="nofollow">Map
и предоставя values()
, с които мога да работя, когато имам нужда от JCF-съвместимо поведение. Например, използването му в ArrayAdapter
и различно персонализирано сортиране (за стойности ).
Въпросът ми е троен:
- Защо
SparseArray
не внедрява JCF интерфейси? Искам да кажа, каква е мотивацията да не внедрим тези интерфейси в светлината на факта, че повечето от методите вече са там? - Има ли алтернативи на
SparseArray
, които прилагат JCF интерфейси или могат лесно да бъдат конвертирани и да запазятSparseArray
производителност? - Наистина ли
HashMap
и с няколкостотин елемента толкова по-бавно? Моите потребители наистина ли ще забележат?
Търся задълбочени отговори и предпочитам да имам препратки към авторитетни сайтове. Ако смятате, че знаете защо SparseArray
не е внедрен с JCF интерфейси, покажете малко подкрепа, помогнете ми да разбера. Ако смятате, че трябва да използвам SparseArray
, покажете ми как да го използвам с ArrayAdapter
и персонализирано сортиране (Comparator-подобно на предпочитаните решения). Ако има по-добри алтернативи, връзки към API документ, библиотека или урок биха били полезни. Ако смятате, че трябва да се придържам към HashMap
s , обяснете защо ползата от производителността на SparseArray
е по-малка от нуждите на интерфейси.
HashMap
. Всъщност няма практичен начин да направите това – тъй като вие сте единственият човек на планетата, който познава вашето приложение, ще трябва да приемем това за чиста монета. Да пренебрегна ли тези предупреждения? -- ако няма практически начин да използватеSparseArray
, изглежда, че нямате избор. - person CommonsWare   schedule 23.04.2013HashMap<Integer, Object>
, помислете заSparseArray
. Ако ще бъде болезнено да го използвате, използвайте Traceview, за да определите колко време заемате с настоящото си базирано наHashMap
решение. Ако отговорът не е много, тогава по дефиницияSparseArray
ще помогне по-малко, отколкото не много, и не си струва да се притеснявате. По отношение на предупреждението Lint, ако решите да се придържате къмHashMap
, трябва да има анотация@SuppressLint
, която ще блокира предупреждението. Ако използвате Eclipse, тази анотация трябва да бъде в списъка за бързи корекции (ако не, това е ADT грешка). - person CommonsWare   schedule 23.04.2013