JAVA - 자료구조, Collection 별 특징 정리
JAVA Collection별 특징과 시간 메소드별 시간 복잡도를 일목요연하게 정리한 내용입니다.
JAVA - 자료구조, Collection 별 특징 정리
Collection 특징 구분
| 구분 | 종류 | 중복허용 | 순서 존재 | 정렬여부 | Thread-safe |
|---|---|---|---|---|---|
| LIST | ArrayList LinkedList Vector |
Yes Yes Yes |
Yes Yes Yes |
No No No |
No No Yes |
| SET | HashSet LinkedHashSet TreeSet |
No No No |
No Yes Yes |
No No Yes |
No No No |
| MAP | HashMap LinkedHashMap Hashtable TreeMap |
No No No No |
No Yes No Yes |
Yes(Key) No No Yes |
No No Yes No |
자료 구조 특징 구분
| 종류 | 특징 | 중복허용 | Null 허용 |
|---|---|---|---|
| List | 원하는 순서로 Element 삽입가능 각 요소는 Index 번호를 부여 받는다. |
Yes | - |
| Set | 중복 Element 불가능 그러므로 쉽게 여부 중복확인 가능. 특정 순서(Order) 정할수 없음. |
No | - |
| Queue | Output으로 나올 Element만 기본적으로 접근 가능하다 |
Yes | - |
| PriorityQueue | 가장 우선순위가 높은 Element가 Head First가 된다 | Yes | No |
| Deque | 양 끝단에서 모두 삽입 / 삭제 가능 | Yes | - |
| Map | Key / Value로 구성된다. | 키 : No - 값 : Yes | 키 : 하나의 (null) 키 허용) - 값 : Yes |
LIST
| Class Name | Add | Remove | Get | Contains |
|---|---|---|---|---|
| ArrayList | O(1) | O(n) | O(1) | O(n) |
| LinkedList | O(1) | O(1) | O(n) | O(n) |
SET
| Class Name | Add | Contains | Next |
|---|---|---|---|
| HashSet | O(1) | O(1) | O(h/n) |
| LinkedHashSet | O(1) | O(1) | O(1) |
| EnumSet | O(1) | O(1) | O(1) |
| TreeSet | O(log n) | O(log n) | O(log n) |
QUEUE
| Class Name | Offer | Peak | Poll | Size |
|---|---|---|---|---|
| PriorityQueue | O(log n) | O(1) | O(log n) | O(1) |
| LinkedList | O(1) | O(1) | O(1) | O(1) |
| ArrayDequeue | O(1) | O(1) | O(1) | O(1) |
| DelayQueue | O(log n) | O(1) | O(log n) | O(1) |
MAP
| Class Name | Get | ContainsKey | Next |
|---|---|---|---|
| HashMap | O(1) | O(1) | O(h/n) |
| LinkedHashMap | O(1) | O(1) | O(1) |
| WeakHashMap | O(1) | O(1) | O(h/n) |
| EnumMap | O(1) | O(1) | O(1) |
| TreeMap | O(log n) | O(log n) | O(log n) |