Предупреждение показывает, когда я использую хэш-карту в android(используйте новый SparseArray)
Я новичок в разработке в android. В моем android-приложении я использую HashMap
, но я получаю предупреждение:
**"Use new SparseArray<String>(...) instead for better performance"**
что это значит и как я могу использовать SparseArray<String>
вместо?
3 ответа:
использовать новый
SparseArray<String>(...)
вместо этого для повышения производительностивы получаете это предупреждение из-за описанной причины здесь.
разреженные лучи отображают целые числа на объекты. В отличие от обычного массива Объекты, могут быть пробелы в индексах. Он предназначен, чтобы быть больше эффективнее, чем использовать хэш-карту для сопоставления целых чисел с объектами.
теперь
как я использую SparseArray ?
вы можете сделать это следующими способами:
HashMap
путь:Map<Integer, Bitmap> _bitmapCache = new HashMap<Integer, Bitmap>(); private void fillBitmapCache() { _bitmapCache.put(R.drawable.icon, BitmapFactory.decodeResource(getResources(), R.drawable.icon)); _bitmapCache.put(R.drawable.abstrakt, BitmapFactory.decodeResource(getResources(), R.drawable.abstrakt)); _bitmapCache.put(R.drawable.wallpaper, BitmapFactory.decodeResource(getResources(), R.drawable.wallpaper)); _bitmapCache.put(R.drawable.scissors, BitmapFactory.decodeResource(getResources(), } Bitmap bm = _bitmapCache.get(R.drawable.icon);
SparseArray
путь:SparseArray<Bitmap> _bitmapCache = new SparseArray<Bitmap>(); private void fillBitmapCache() { _bitmapCache.put(R.drawable.icon, BitmapFactory.decodeResource(getResources(), R.drawable.icon)); _bitmapCache.put(R.drawable.abstrakt, BitmapFactory.decodeResource(getResources(), R.drawable.abstrakt)); _bitmapCache.put(R.drawable.wallpaper, BitmapFactory.decodeResource(getResources(), R.drawable.wallpaper)); _bitmapCache.put(R.drawable.scissors, BitmapFactory.decodeResource(getResources(), } Bitmap bm = _bitmapCache.get(R.drawable.icon);
надеюсь, что это поможет.
SparseArray
используется, когда вы используетеInteger
как ключ.при использовании
SparseArray
на ключ остаются примитивной переменной во все времена в отличие от, когда вы используетеHashMap
где это необходимо, чтобы иметьObject
как ключ который вызовет int, чтобы статьInteger
объект просто на короткое время, получая объект на карте.С помощью
SparseArray
вы сохраните Сборщик Мусора некоторые работы.так что используйте так же, как
Map<Integer,String>
.
это намек на то, что есть лучшая структура данных для вашего кода.
этот намек от Линта. Вы обычно получаете его, когда у вас есть
HashMap
целых чисел к чему-то еще.его самое большое преимущество заключается в том, чтобы рассматривать целочисленный ключ как примитив. Другими словами, он не будет скрыт до
Integer
(объект Java), чтобы использовать его в качестве ключа.это важно при использовании больших карт.
HashMap
приведет к созданию многих, многихInteger
объекты в этом случай.Смотрите еще несколько частей информации здесь.