警告显示当我使用哈希表在安卓(使用新的SparseArray )(Warning shows

2019-08-16 21:07发布

我是新来的开发Android。 在我的Android应用我使用HashMap ,但我发现了一个警告:

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

这是什么意思,我如何使用SparseArray<String>呢?

Answer 1:

使用新的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); 

希望这将有助于。



Answer 2:

SparseArray是当你使用的是使用Integer作为重点。

当使用SparseArray关键就会留在这里。在任何时候,当您使用不同于原始变量 HashMap它需要有一个Object作为重点 ,这将导致INT成为一个Integer对象只是很短的时间,而得到在地图中的对象。

通过使用SparseArray你将节省垃圾收集一些工作。

因此,使用就像一个Map<Integer,String>



Answer 3:

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

这提示是从皮棉。 你通常会得到它,当你有一个HashMap整数别的东西。

它的最大优点是治疗整数键作为原始。 换句话说,它不会以隐蔽的Integer (在Java对象)来使用它作为一个重点。

使用大地图时,这是一个大问题。 HashMap会导致产生很多很多的Integer在这种情况下的对象。

看到更多条信息在这里 。



Answer 4:

SparseArray比HashMap的整数键值对更好的内存有效的数据结构。 它是专门针对Android和我相信它不能用于Java SE的。

有时候,短绒警告显示,SparseArray必须使用如上面。 这愚蠢的警告可能是对还是错。 您需要决定使用SparseArray而HashMap类,如果你觉得合适,或者您需要@SuppressLint注释压制它。

要决定是否实施,这是值得做一点点研究,并评估自己的情况。 你可以在这里找到所有的一些有用的链接

https://gunhansancar.com/sparsearray-vs-hashmap/

https://developer.android.com/reference/android/util/SparseIntArray



文章来源: Warning shows when i use Hash Map In android(Use new SparseArray)