본문으로 바로가기

[Java] 자바 컬렉션들의 시간 복잡도 (Big O)

category 언어/Java 2021. 11. 23. 16:02
728x90

 

Java Collection

 

인터페이스 특징 구현클래스
List 순서가 있는 데이터의 집합, 데이터의 중복을 허용 ArrayList, LinkedList, Stack, Vector
Set 객체의 순서가 없으며, 데이터의 중복을 허용하지 않음 HashSet, TreeSet, EnumSet
Queue 객체를 입력한 순서대로 저장되며, 데이터의 중복을 허용 PriorityQueue, DelayQueue, LinkedList
Map 키(key)와 값(value)의 쌍으로 이루어진 데이터의 집합
순서가 없으며, 키는 중복을 허용하지 않으며 값은 중복을 허용
HashMap, TreeMap,
HashTable, Properties

 

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) LinkedList
CopyonWriteArrayList O(n) O(n) O(1) O(n) Array

 

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
PriorityBlockingQueue 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 Table
ConcurrentSkipListMap O(log n) O(log n) O(1) Skip List

 

Reference

https://soft.plusblog.co.kr/74

728x90