美文网首页
SparseArray一些要点

SparseArray一些要点

作者: 文叔_ | 来源:发表于2015-12-12 17:24 被阅读999次

    名词:
    auto-boxing:
    自动装箱(将java中的基本数据类型转换成相应的包装类。 比如Integer i = 1;就会将1装换为一个Integer的对象。)
    简介:
    SparseArray将整数索引对象,不像一般的数组(索引间有内存间隔),它比HaspMap用Integer索引对象更加省内存。
    原因大概有两个:
    1:避免了auto-boxing
    2:它本身的数据结构在每次mapping的时候都不需要一个额外的输入对象
    SparseArray也是一般的数组结构,用二进制查询的方式进行索引,所以它要比HashMap要慢,如果1000以下的数据量,效率也不会慢很多吧,50%以下。
    为了优化性能,SparseArray在移除keys的时候做出了优化:不立即删除entry压缩数组,而是标记entry为deleted,然后entry以后可以重用,直到下次garbage collection的时候才处理(garbage collection 将在SparseArray被检索,大小需要增加的时候调用)。

    用法:
    常用的就是增删改查:

    Paste_Image.png Paste_Image.png

    //删除的时候先标记entry为DELETE,再将mGarbage改为true,随时等待回收


    Paste_Image.png

    //增加的时候用append代替put防止数据越界


    Paste_Image.png
    if(mGarbage)
    gc();
    如果需要回收,就先回收
    Paste_Image.png Paste_Image.png

    相关文章

      网友评论

          本文标题:SparseArray一些要点

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