二分查找和红黑树性能对比二分查找
用数组保存数据,保证有序。二分查找速度很快,但是仅限于查找。因为插入的时候要保证有序,所以要往后移动数据以便插入。查找复杂度O(logn),插入复杂度O(n)红黑树
无论数据量如何,插入删除时间复杂度都为O(logn)SparseArray是什么?SparseArray稀疏数组,可以用来存储基本类型数据,避免数据的装箱拆箱,某些情况下性能更好。几个同类 SparseArray
存储Object类型,put(int key, E value)SparseIntArray
存储int类型,put(int key, int value)SparseLongArray
存储long类型,put(int key, long value)SparseBooleanArray
存储boolen类型,put(int key, boolean value) SparseArray用法添加数据
put(int key, int value)
append(int key, int value)删除数据
removeAt(int index) 根据索引删除
delete(int key) 根据键删除
索引和键不同。
private fun test() { val intArray = SparseIntArray() intArray.put(1, 1) intArray.put(2, 2) intArray.put(3, 3) Log.d(TAG, "test: $intArray") intArray.delete(1) Log.d(TAG, "test: $intArray") intArray.removeAt(1) Log.d(TAG, "test: $intArray") }
D/MainActivity: test: {1=1, 2=2, 3=3}D/MainActivity: test: {2=2, 3=3}D/MainActivity: test: {2=2}
SparseArray特点可以存储基本类型,避免装箱开箱无需Hash根据key进行排序增加数据和查找数据基于二分查找延迟删除并不是在每次remove *** 作直接移动数组元素,而是用一个删除标记将对应key的value标记为已删除,并标记需要回收,等待下次添加、扩容等需要移动数组元素的地方统一 *** 作,进一步提升性能某些场景下可以用SparseArray来代替HashMap<Integer, E>参考资料SparseArray官方文档ArrayMap官方文档Android内存优化(使用SparseArray和ArrayMap代替HashMap)查找算法之顺序、二分、二叉搜索树、红黑树 详细比较总结 总结
以上是内存溢出为你收集整理的Android SparseArray和ArrayMap相关总结全部内容,希望文章能够帮你解决Android SparseArray和ArrayMap相关总结所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)