SparseArray

一、实体结构

int[] mKeys

Object[] mValues

int mSize = 10

主要结构是array 与arrayList 使用相同 key 其实就是索引值

put方法

  1. 目标索引的确认


    SparseArray_第1张图片
    1.png

    首先是通过ContainerHelpers.binarySearch(mKeys,mSize,key)来进行计算
    入参是1:mKeys[] 数组 mSize 当前已有元素数量 key 当前输入的key
    put(1,"1")


    SparseArray_第2张图片
    p11.jpg

    put(10,"10")
    SparseArray_第3张图片
    p10.jpg

    put(100,"100")


    SparseArray_第4张图片
    p100.jpg

put(2,"2")


SparseArray_第5张图片
p2.jpg
  1. 插入新的元素

通过上一步 binarySearch获取的 i 值 在添加新元素 时通常通过取反获取一个负数
put(1,"1") 时 i = ~0
put(10,"10") 时 i = ~1
put(100,"100") 时 i = ~2
put(2,"2") 时 i = ~1
在下面执行元素插入操作时 再次对 i取反 获取目标index
put(1,"1") 时 i = 0
put(10,"10") 时 i = 1
put(100,"100") 时 i = 2
put(2,"2") 时 i = 1
put(1,"1") mSize = 0 i= 0


SparseArray_第6张图片
i11.png

put(10,"10") mSize = 1 i= 1


SparseArray_第7张图片
i10.jpg

put(100,"100") mSize = 2 i= 2


SparseArray_第8张图片
i100.jpg

put(2,"2") mSize = 3 i=1


SparseArray_第9张图片
i22.png

你可能感兴趣的:(SparseArray)