SparseArray与ArrayMap的使用条件

来源:互联网 发布:ios编程基础 编辑:程序博客网 时间:2024/06/05 23:42

SparseArray和ArrayMap的使用原因是因为HashMap在申明后就至少使用一个宽度为16的数组并占用相应内存,在扩容时,容量会直接翻为两倍,(即只有1对KV值,用Hashmap装,依然要占用16数组的内存,当有17对KV值时要占用32数组的内存),并且Hashmap会对int进行Intege装箱处理r。而HashMap的扩容因子为0.75(即容量超过75%时,Hashmap会扩容一倍。 

SparseArray 使用条件: Key为int类型,数据量在千级以内,可替代HashMap进行使用。

LongSparseArray 使用条件: Key为long类型,同上。

ArrayMap       使用条件: Key为其它数据类型。

集合                性能            默认容量          空时的大小      1W条目的开销(忽略键值大小)   准确设置大小     扩容算法

HashSet        O(1) 16144 360kX *2

HashMap      O(1) 16128 360kX *2

HashTable O(1) 11104 360kX *2+1

LinkedList O(n)1 48 240k Y +1

ArrayList O(n)10 88 40k X *1.5

StringBuffer O(1) 1672 24 X *2


1 0
原创粉丝点击