移除集合效率高还是add高_效率比较--集合
List
ArrayList
實(shí)現(xiàn)原理內(nèi)部封裝Object[]數(shù)組(若創(chuàng)建時(shí)未指定長(zhǎng)度?數(shù)組初始長(zhǎng)度默認(rèn)為10)
實(shí)質(zhì)為?:無序數(shù)組?插入快?查找和刪除指定元素慢
總結(jié)
O(1)
O(N)
O(1)?System.arraycopy
get(int?i)
Y
set(int?index,Object?obj)
Y
add(Object?obj)
Y
add(int?index,Object?obj)
Y
remove(int?index)
remove(Object?o)
Y
contains(Object?obj)
Y
結(jié)論(實(shí)驗(yàn)ArrayListPerformanceTest.java)
add(int?index,?E?element)?添加元素到指定位置?效率低下
add(E?e)?添加單個(gè)元素?效率高
LinkedList
實(shí)質(zhì):雙向鏈表
O(1)
O(N)
getFirst()/getLast()
Y
removeFirst()/removeLast()
Y
addFirst(E?e)/?addLast(E?e)
Y
contains(Object?o)
Y
add(E?e)
Y
remove(Object?o)
Y
get(int?index)
Y
set(int?index,?E?element)
Y
實(shí)驗(yàn)結(jié)果
ArrayList?add(E?e):??????????????????? ??60460850ns
LinkedList?add(E?e):?? ?? ??54999241ns
ArrayList?remove(index):?? ??????1855036016ns
LinkedList?remove(object):? ??42823941ns
ArrayList?contains(Object?o):?? ??15517890276ns
LinkedList?contains(Object?o):? ??29827766030ns
ArrayList與LinkedList效率比較
ArrayList查找操作的效率最高為,但其在添加和刪除操作時(shí)需要拷貝數(shù)組所以效率較低,尤其是刪除操作。該數(shù)據(jù)結(jié)構(gòu)適用于需要頻繁快速查找的地方。
LinkList?查找操作效率較低為,但其插入與刪除操作效率較高,適用于需要頻繁進(jìn)行插入刪除操作的情況。
MAP
HashMap
Map是一組key-value(鍵值對(duì))集合,其中的key(鍵)不能重復(fù)。
HashMap?用key對(duì)象生成hashcode然后映射到Entry[]數(shù)組中(JDK1.6中其hashtable默認(rèn)大小為16,在持有對(duì)象數(shù)量查過默認(rèn)大小之后就會(huì)重新生成一個(gè)更大HashTable,然后將原有持有的對(duì)象逐個(gè)散列到新哈希表中)。其get(Object?key)最佳時(shí)間復(fù)雜度為O(1),最壞則為O(n)。但就查找的平均效率來說是要高于TreeMap。
TreeMap?用key對(duì)象為關(guān)鍵值存放在RBTree(紅黑樹)中。其get(Object?key)方法的平均時(shí)間復(fù)雜度為O(logn)。
References?Resource
總結(jié)
以上是生活随笔為你收集整理的移除集合效率高还是add高_效率比较--集合的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: springboot 两个src_spr
- 下一篇: loginform登录表单 vs_【VS