安卓性能优化一 : 数据结构优化

642 阅读1分钟

什么是性能优化?

app 除了有非常好的功能和交互之外,在性能上也要追求极致。

1.性能优化的方向

数组

一片物理上连续的 大小确定的内存空间

可以随机的查找 随机修改

对于添加和删除非常复杂

为了解决问题 引出顺序表

顺序表

特点:物理上连续 逻辑上连续 发小可以动态修改

ArrayList

add()

arraycopy()形式添加

如果向index位置添加元素会将 index包括后面的元素拷贝后移之后再进行元素的插入

remove() arraycopy()形式删除 删除元素以后index后边的元素都需要向前拷贝移动

链表 特点:物理上不连续,逻辑上连续,可以动态添加和删除节点 双向链表

LinkList

每次进行查找都需要for循环找出位置

hashMap

数组链表的混合结构 table数组 + 链表

key通过hash运算取模之后获取到对应table的下标

hash碰撞的解决 扩容减少碰撞 扩容意为 速度编码 里面数据从新hash

SparseArray

基于hash表实现