- 在Collection中查找指定元素是否存在,用HashSet: add() remove() contains() 全部o(1)
- 在Collection中查找指定元素是否存在,并通过该元素A找B,用HashMap: put(k,v) remove(k) containsKey(k) get(k) 全部o(1)
- 加在尾,删在尾,看在尾,用Stack: push() pop() peek() 全部o(1) first in last out
- 加在尾,删在头,看在头,用Queue: add() remove() peek() 全部o(1) first in first out
- 加在头,删在头,看在头,加在尾,删在尾,看在尾, 用Deque 全部o(1)
最大/最小 | 加入新元素 | 删除极值 | 删除指定元素 | 查找指定元素 | 查找极值 |
---|---|---|---|---|---|
B.S.T | o(lgn) | o(lgn) | o(lgn) | o(lgn) | o(lgn) 两头 |
Heap | o(lgn) | o(lgn) | o(n) | o(n) | o(1)一头 |
BST 查找极值
PriorityQueue<T> heap = new PriorityQueue<>((o1,o2)-> expression); 允许重复
加入( -: o1 前 o2 后 +:o2 前 o1后 0:前后无所谓 )
删除(与comparator无关,用的iterator 和equals() )
TreeMap<K,V> bst = new TreeMap<>((o1,o2)-> expression); 不允许重复
TreeSet<T> bst = new TreeSet<>((o1,o2)-> expression); 不允许重复
加入( -: o1 前 o2 后 +:o2 前 o1后 0:不加/替换)
删除( -: o1 前 o2 后 +:o2 前 o1后 0:找到了)