警告显示当我使用散列地图在Android(使用新的SparseArray <String>)

我是在android开发新手。 在我的Android应用我使用HashMap ,但我得到一个警告:

 **"Use new SparseArray<String>(...) instead for better performance"** 

这是什么意思,我怎样才能使用SparseArray<String>呢?

使用新的SparseArray<String>(...)来获得更好的性能

由于此处所述的原因,您将收到此警告。

SparseArrays将整数映射到对象。 与普通的对象数组不同,索引中可能存在空白。 它的目的是比使用HashMap将整数映射到对象更高效。

现在

我如何使用SparseArray?

你可以通过以下方式来做到这一点:

  1. 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); 
  2. 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在所有项目中都将保留为原始variables ,与使用HashMap时不同的是,它需要有一个Object作为一个 ,这会导致int成为一个Integer对象 ,地图中的对象。

通过使用SparseArray您将保存垃圾收集器的一些工作。

所以就像一个Map<Integer,String>

这暗示你的代码有一个更好的数据结构。

这个提示来自Lint。 当你有一个整数的HashMap到别的东西时你通常会得到它。

其最大的优点是把整数键作为一个原语。 换句话说,它不会转换为Integer (Java对象)来使用它作为关键字。

使用大型地图时,这是一个大问题。 在这种情况下, HashMap将导致创build许多Integer对象。

在这里看到更多的信息。