Android之工具类说明与帮助
2013-12-19 09:46
369 查看
1.SparseIntArray类
SparseIntArray类是一个Map,主要是存储key为整数,value也为整数的map.但是比使用Map<Integer,Integer>要高效很多.因为SparseIntArray中存放的是经过排序后的map,查换使用了二叉树折半查找,效率比map要高很多.查看源码可以看见,实现是将Key与Value分别用2个int[]实现,而且查找又使用了折半查找,所以效率比map高很多.so 如果用到Map<Integer,Integer>时,可以用SparseIntArray来代替,提高效率.
工作原理,首先0初始化一个为长度10的数组但是插入的时候,首先判断数组里有无key,如果有则直接将key对应的value覆盖,如果没有key则当前size是否大于20,如果大于20则重新分配一个更长的数组,然后将比key大的值的keys,values全部向后移动一位,然后将key与value插入到正确的位置.
SparseIntArray类是一个Map,主要是存储key为整数,value也为整数的map.但是比使用Map<Integer,Integer>要高效很多.因为SparseIntArray中存放的是经过排序后的map,查换使用了二叉树折半查找,效率比map要高很多.查看源码可以看见,实现是将Key与Value分别用2个int[]实现,而且查找又使用了折半查找,所以效率比map高很多.so 如果用到Map<Integer,Integer>时,可以用SparseIntArray来代替,提高效率.
工作原理,首先0初始化一个为长度10的数组但是插入的时候,首先判断数组里有无key,如果有则直接将key对应的value覆盖,如果没有key则当前size是否大于20,如果大于20则重新分配一个更长的数组,然后将比key大的值的keys,values全部向后移动一位,然后将key与value插入到正确的位置.
private static int binarySearch(int[] a, int start, int len, int key) {//折半查找相当的key对应的位置, int high = start + len, low = start - 1, guess; while (high - low > 1) { guess = (high + low) / 2; if (a[guess] < key) low = guess; else high = guess; } if (high == start + len) return ~(start + len); else if (a[high] == key) return high; else return ~high; } }
public void put(int key, int value) { int i = binarySearch(mKeys, 0, mSize, key); if (i >= 0) { mValues[i] = value; } else { i = ~i; if (mSize >= mKeys.length) { int n = ArrayUtils.idealIntArraySize(mSize + 1); int[] nkeys = new int ; int[] nvalues = new int ; // Log.e("SparseIntArray", "grow " + mKeys.length + " to " + n); System.arraycopy(mKeys, 0, nkeys, 0, mKeys.length); System.arraycopy(mValues, 0, nvalues, 0, mValues.length); mKeys = nkeys; mValues = nvalues; } if (mSize - i != 0) { // Log.e("SparseIntArray", "move " + (mSize - i)); System.arraycopy(mKeys, i, mKeys, i + 1, mSize - i); System.arraycopy(mValues, i, mValues, i + 1, mSize - i); } mKeys[i] = key; mValues[i] = value; mSize++; } }
相关文章推荐
- 13个对Android开发者有帮助的工具和资源(转自android吧(www.and8.com))
- MTK Android software Tools工具的说明
- 关于本人开发的CMM解释器工具的使用帮助说明
- MTK Android software Tools工具的说明
- android内存泄露检测工具--LeakCanary 中文使用说明
- Android-SDK-Tools的工具功能说明
- Android开发学习笔记(7):查看SQLite的工具说明
- 13个对Android开发者有帮助的工具和资源
- [置顶] Android资源混淆工具使用说明
- MTK Android software Tools工具的说明
- Android帮助文档(第二部分)开发工具
- 13个对Android开发者有帮助的工具和资源
- Android 源码 工具 帮助 镜像
- Android辅助开发工具说明
- <VB6.0 & android开发小工具> 桌面帮助程序 里面涉及到的代码
- Android-MonkeyRunner 工具说明
- Android 性能分析工具之 TraceView 使用说明
- MTK Android software Tools工具的说明
- Android各种帮助开发工具
- Android:apk编译工具_baksmali和smali的使用说明和介绍