[Java] Collection별 시간 복잡도

soohee·2023년 4월 30일
0

Java

목록 보기
2/3
post-thumbnail

코딩테스트를 보다보면 주로 1초(10^8)안에 풀어야 하는 것들이 많이 나와서 좀 더 빠른 알고리즘을 사용하기 위해선 정리가 필요해보였다.

List

addremovegetcontains자료 구조
ArrayListO(1)O(n)O(1)O(n)Array
LinkedListO(1)O(1)O(n)O(n)Linked List

Set

addcontainsnext자료 구조
HashSetO(1)O(1)O(h/n)Hash Table
LinkedHashSetO(1)O(1)O(1)Hash Table + Linked List
EnumSetO(1)O(1)O(1)Bit Vector
TreeSetO(logn)O(logn)O(logn)Red-black tree

Queue

offer() : 큐에 요소를 추가하고 반환하는 잘못된 요소를 추가 할 수없는 경우(큐가 가득 찬 경우)에 특정 예외를 throw 하지 않는다.

peek() : 큐의 처음에 있는 원소를 삭제하지 않고 가져온다. 큐가 비어있으면 null을 반환

poll() : 큐의 처음에 있는 원소를 가져온다. 큐에 원소가 없으면 null을 반환

offerpeekpollsize자료 구조
PriorityQueueO(logn)O(1)O(logn)O(1)Priority Heap
LinkedListO(1)O(1)O(1)O(1)Array
ArrayDequeueO(1)O(1)O(1)O(1)Linked List

Map

getcontainsKeynext자료 구조
HashMapO(1)O(1)O(h/n)Hash Table
LinkedHashMapO(1)O(1)O(1)Hash Table + Linked List
EnumMapO(1)O(1)O(1)Array
TreeMapO(logn)O(logn)O(logn)Red-black tree
profile
🐻‍❄️

2개의 댓글

comment-user-thumbnail
2023년 5월 1일

map의 value를 기반으로 탐색은 시간복잡도가 어떻게 되나요 ? 그부분도 있으면 좋을 거 같아요
잘했어요

답글 달기
comment-user-thumbnail
2023년 5월 15일

표형식으로 한번에 비교하면서 보니 차이가 더 명확하게 보이는거 같습니다!

답글 달기