Предупреждение показывает, когда я использую хэш-карту в 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объекты в этом случай.Смотрите еще несколько частей информации здесь.