什么是性能优化?
app 除了有非常好的功能和交互之外,在性能上也要追求极致。
1.性能优化的方向
数组
一片物理上连续的 大小确定的内存空间
可以随机的查找 随机修改
对于添加和删除非常复杂
为了解决问题 引出顺序表
顺序表
特点:物理上连续 逻辑上连续 发小可以动态修改
ArrayList
add()
arraycopy()形式添加
如果向index位置添加元素会将 index包括后面的元素拷贝后移之后再进行元素的插入
remove() arraycopy()形式删除 删除元素以后index后边的元素都需要向前拷贝移动
链表 特点:物理上不连续,逻辑上连续,可以动态添加和删除节点 双向链表
LinkList
每次进行查找都需要for循环找出位置
hashMap
数组链表的混合结构 table数组 + 链表
key通过hash运算取模之后获取到对应table的下标
hash碰撞的解决 扩容减少碰撞 扩容意为 速度编码 里面数据从新hash
SparseArray
基于hash表实现