Java 集合时间复杂度
List
ArrayList
get() 直接讀取下標(biāo),復(fù)雜度 O(1)
add(E) 直接在隊(duì)尾添加,復(fù)雜度 O(1)
add(index, E) 在第n個(gè)元素后插入,n后面的元素需要向后移動(dòng),復(fù)雜度 O(n)
remove() 刪除元素后面的元素需要逐個(gè)前移,復(fù)雜度 O(n)
LinkedList
addFirst() 添加隊(duì)列頭部,復(fù)雜度 O(1)
removeFirst() 刪除隊(duì)列頭部,復(fù)雜度 O(1)
addLast() 添加隊(duì)列尾部,復(fù)雜度 O(1)
removeLast() 刪除隊(duì)列尾部,復(fù)雜度 O(1)
getFirst() 獲取隊(duì)列頭部,復(fù)雜度 O(1)
getLast() 獲取隊(duì)列尾部,復(fù)雜度 O(1)
get() 獲取第n個(gè)元素,依次遍歷,復(fù)雜度O(n)
add(E) 添加到隊(duì)列尾部,復(fù)雜度O(1)
add(index, E) 添加到第n個(gè)元素后,需要先查找到第n個(gè)元素,復(fù)雜度O(n)
remove() 刪除元素,修改前后元素節(jié)點(diǎn)指針,復(fù)雜度O(1)
Set
HashSet
add() 復(fù)雜度為 O(1)
remove() 復(fù)雜度為 O(1)
contains() 復(fù)雜度為 O(1)
TreeSet(基于紅黑樹(shù))
add() 復(fù)雜度為 O(log (n))
remove() 復(fù)雜度為 O(log (n))
contains() 復(fù)雜度為 O(log (n))
map
TreeMap(基于紅黑樹(shù))
平均時(shí)間復(fù)雜度 O(log n)
HashMap
正常時(shí)間復(fù)雜度 O(1)~O(n)
紅黑樹(shù)后 O(log n)
LinkedHashMap
能以時(shí)間復(fù)雜度 O(1) 查找元素,又能夠保證key的有序性
超強(qiáng)干貨來(lái)襲 云風(fēng)專訪:近40年碼齡,通宵達(dá)旦的技術(shù)人生總結(jié)
以上是生活随笔為你收集整理的Java 集合时间复杂度的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 揪出XXL-JOB中的细节
- 下一篇: 分布式锁中的王者方案:Redisson