Java-集合时间复杂度

42次阅读

共计 640 个字符,预计需要花费 2 分钟才能阅读完成。

List

ArrayList

get() 直接读取下标,复杂度 O(1)
add(E) 直接在队尾添加,复杂度 O(1)
add(index, E) 在第 n 个元素后插入,n 后面的元素需要向后移动,复杂度 O(n)
remove() 删除元素后面的元素需要逐个前移,复杂度 O(n)

LinkedList

addFirst() 添加队列头部,复杂度 O(1)
removeFirst() 删除队列头部,复杂度 O(1)
addLast() 添加队列尾部,复杂度 O(1)
removeLast() 删除队列尾部,复杂度 O(1)
getFirst() 获取队列头部,复杂度 O(1)
getLast() 获取队列尾部,复杂度 O(1)
get() 获取第 n 个元素,依次遍历,复杂度 O(n)
add(E) 添加到队列尾部,复杂度 O(1)
add(index, E) 添加到第 n 个元素后,需要先查找到第 n 个元素,复杂度 O(n)
remove() 删除元素,修改前后元素节点指针,复杂度 O(1)

Set

HashSet

add() 复杂度为 O(1)
remove() 复杂度为 O(1)
contains() 复杂度为 O(1)

TreeSet(基于红黑树)

add() 复杂度为 O(log (n))
remove() 复杂度为 O(log (n))
contains() 复杂度为 O(log (n))

map

TreeMap(基于红黑树)

平均时间复杂度 O(log n)

HashMap

正常时间复杂度 O(1)~O(n)
红黑树后 O(log n)

LinkedHashMap

能以时间复杂度 O(1) 查找元素,又能够保证 key 的有序性

正文完
 0