Collection 시간 복잡도/ 특징
List
ArrayList
add() : O(1)
remove() : O(N)
get() : O(1)
Contains() : O(N)
특징 : 대량의 데이터 삽입/삭제 시 성능 저하, 검색에는 용이
LinkedList
add() : O(1)
remove() : O(1)
get() : O(N)
Contains() : O(N)
특징 : 데이터 삽입/삭제 빠름, 검색은 느리다.
Queue
PriorityQueue
offer() : O(log N)
peek() : O(1)
poll() : O(log N)
size() : O(1)
특징 : 일반적인 Queue는 FIFO 구조를 갖지만, natural Order에 따라 정렬한다.
ArrayBlockingQueue
offer() : O(1)
peek() : O(1)
poll() : O(1)
size() : O(1)
특징 : FIFO, 고정된 사이즈로 생성 후 변경이 불가능하다.
ArrayDeque
offer() : O(1)
peek() : O(1)
poll() : O(1)
size() : O(1)
특징 : 양쪽에서 element를 삽입/삭제 가능한 확장 가능한 배열
Set
HashSet
add() : O(1)
remove() : O(1), 해시 충돌 발생 시 최악의 경우 O(N)
contains() : O(1)
next() : O(h/n)
특징 : 객체를 순서없이 저장하고 중복을 허용하지 않음, null을 허용한다.
LinkedHashSet
add() : O(1)
remove() : O(1)
contains() : O(1)
next() : O(1)
특징 : 순서대로 저장하지만 HashSet에 비해 느리고 성능은 좋다.
TreeSet
add() : O(log N)
remove() : O(log N)
contains() : O(log N)
next() : O(log N)
특징 : Object 기준으로 정렬, null을 허용하지 않는다.
Map
HashMap
put() : O(1), Collisions 발생 시 O(N)일 경우도 있다.
get() : O(1)
containsKey : O(1)
TreeMap
put() : O(log N)
remove() : O(log N)
get() : O(log N)
Last updated