数据结构层面的优化,能够达到加快响应速度以及减小内存。

ArrayList,是对数组的封装,数组便于修改和查看。对于增加和删除arraylist的add 和remove方法中增加了这个方法就是用来在插入或者删除元素之后,要将index之后的元素都往后或者往前移一位,System.arraycopy(elementData, index, elementData, index +1,size - index);由于复制内容增加和删除效率低。
LinkedList是一个双向链表,也就是说list中的每个元素,在存储自身值之外,还 额外存储了其前一个和后一个元素的地址,所以 也就可以很方便地根据当前元素获取到其前后的元素.链表的尾部元素的后一个节点是链表的头节点;而链表的头结点前一个节点则是则是链表的尾节点.所以根据链表的特性插入和删除效率高

对比arraylist和linkdlist

HashMap是基于哈希表(散列表),实现Map接口的双列集合,数据结构是“链表散列”,也就是数组+链表 ,key唯一的value可以重复,允许存储null 键null 值,元素无序。由于综合了数组和链表,性能上查找、删除、增加效率高。


SparseArray,它是用两个数组来存储的,一个用于存储key一个用于存储value。



网友评论