美文网首页
SparseArray

SparseArray

作者: vvweilong | 来源:发表于2021-04-07 13:46 被阅读0次

一、实体结构

int[] mKeys

Object[] mValues

int mSize = 10

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

put方法

  1. 目标索引的确认


    1.png

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


    p11.jpg
    put(10,"10")
    p10.jpg

    put(100,"100")


    p100.jpg

put(2,"2")


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


i11.png

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


i10.jpg

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


i100.jpg

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


i22.png

相关文章

网友评论

      本文标题:SparseArray

      本文链接:https://www.haomeiwen.com/subject/yazykltx.html