List
|
Add |
Remove |
Get |
Contains |
Data Structure |
ArrayList |
O(1) |
O(n) |
O(1) |
O(n) |
Array |
LinkedList |
O(1) |
O(1) |
O(n) |
O(n) |
Linked List |
CopyonWriteArrayList |
O(n) |
O(n) |
O(1) |
O(n) |
Array |
Stack |
O(1) |
O(1) |
O(1) |
O(n) |
Vector 기반 |
Set
|
Add |
Contains |
Next |
Data Structure |
HashSet |
O(1) |
O(1) |
O(h/n) |
Hash Table |
LinkedHashSet |
O(1) |
O(1) |
O(1) |
Hash Table + Linked List |
EnumSet |
O(1) |
O(1) |
O(1) |
Bit Vector |
TreeSet |
O(log n) |
O(log n) |
O(log n) |
Red-black tree |
CopyonWriteArraySet |
O(n) |
O(n) |
O(1) |
Array |
ConcurrentSkipList |
O(log n) |
O(log n) |
O(1) |
Skip List |
Queue
|
Offer |
Peak |
Poll |
Size |
Data Structure |
PriorityQueue |
O(log n ) |
O(1) |
O(log n) |
O(1) |
Priority Heap |
LinkedList |
O(1) |
O(1) |
O(1) |
O(1) |
Array |
ArrayDequeue |
O(1) |
O(1) |
O(1) |
O(1) |
Linked List |
ConcurrentLinkedQueue |
O(1) |
O(1) |
O(1) |
O(n) |
Linked List |
ArrayBlockingQueue |
O(1) |
O(1) |
O(1) |
O(1) |
Array |
PriorirityBlockingQueue |
O(log n) |
O(1) |
O(log n) |
O(1) |
Priority Heap |
SynchronousQueue |
O(1) |
O(1) |
O(1) |
O(1) |
None! |
DelayQueue |
O(log n) |
O(1) |
O(log n) |
O(1) |
Priority Heap |
LinkedBlockingQueue |
O(1) |
O(1) |
O(1) |
O(1) |
Linked List |
Map
|
Get |
ContainsKey |
Next |
Data Structure |
HashMap |
O(1) |
O(1) |
O(h / n) |
Hash Table |
LinkedHashMap |
O(1) |
O(1) |
O(1) |
Hash Table + Linked List |
IdentityHashMap |
O(1) |
O(1) |
O(h / n) |
Array |
WeakHashMap |
O(1) |
O(1) |
O(h / n) |
Hash Table |
EnumMap |
O(1) |
O(1) |
O(1) |
Array |
TreeMap |
O(log n) |
O(log n) |
O(log n) |
Red-black tree |
ConcurrentHashMap |
O(1) |
O(1) |
O(h / n) |
Hash Tables |
ConcurrentSkipListMap |
O(log n) |
O(log n) |
O(1) |
Skip List |
정렬 알고리즘 비교
정렬 이름 | 공간복잡도 | 시간복잡도 | ||
최악 | 최선 | 평균 | 최악 | |
Bubble Sort | O(1) | O(n) | O(n2) | O(n2) |
Heapsort | O(1) | O(n log n) | O(n log n) | O(n log n) |
Insertion Sort | O(1) | O(n) | O(n2) | O(n2) |
Mergesort | O(n) | O(n log n) | O(n log n) | O(n log n) |
Quicksort | O(log n) | O(n log n) | O(n log n) | O(n2) |
Selection Sort | O(1) | O(n2) | O(n2) | O(n2) |
Shell Sort | O(1) | O(n) | O(n log n2) | O(n log n2) |
Smooth Sort | O(1) | O(n) | O(n log n) | O(n log n) |
자료구조별 비교
자료구조이름 | 평균 경우 | 최악의경우 | ||||
Search | Insert | Delete | Search | Insert | Delete | |
Array | O(n) | N/A | N/A | O(n) | N/A | N/A |
ArrayList | O(log n) | O(n) | O(n) | O(log n) | O(n) | O(n) |
Linked List | O(n) | O(1) | O(1) | O(n) | O(1) | O(1) |
Doubly Linked List | O(n) | O(1) | O(1) | O(n) | O(1) | O(1) |
Stack | O(n) | O(1) | O(1) | O(n) | O(1) | O(1) |
Hash table | O(1) | O(1) | O(1) | O(n) | O(n) | O(n) |
Binary Search Tree | O(log n) | O(log n) | O(log n) | O(n) | O(n) | O(n) |
B-Tree | O(log n) | O(log n) | O(log n) | O(log n) | O(log n) | O(log n) |
Red-Black tree | O(log n) | O(log n) | O(log n) | O(log n) | O(log n) | O(log n) |
AVL Tree | O(log n) | O(log n) | O(log n) | O(log n) | O(log n) | O(log n) |
참고 Big O 그래프
'To be Developer > JAVA' 카테고리의 다른 글
Comparator 객체 정리 (Lambda, Stream, 2중비교 포함) (0) | 2020.04.08 |
---|---|
가비지 컬렉터란 무엇일까? (0) | 2019.11.21 |
[펌글] POJO란 무엇인가??? (0) | 2018.03.05 |
[JAVA]Scanner 사용시 가끔 입력을 안받고 넘기는 이유 (0) | 2017.01.18 |
자바스크립트 달력소스 (0) | 2017.01.16 |