[java] 자료구조 선택 규칙
자료구조는 프로그램의 성능과 메모리 사용량에 큰 영향을 미칩니다. 올바른 자료구조를 선택하는 것은 중요합니다. 이 글에서는 몇 가지 자료구조 선택 규칙을 소개하겠습니다.
목차
배열 vs 연결리스트
- 배열(Array)은 크기가 고정되어 있고 연속적인 메모리를 사용합니다.
- 연결리스트(Linked List)는 크기가 가변적이고 포인터를 사용하여 요소를 연결합니다.
- 배열은 접근 시간이 빠르지만 삽입/삭제 시간이 느립니다.
- 연결리스트는 삽입/삭제 시간이 빠르지만 접근 시간이 느립니다.
- 배열은 요소의 개수가 변하지 않고 접근이 빈번할 때 사용하며, 연결리스트는 삽입/삭제가 빈번할 때 사용합니다.
해시맵 vs 트리맵
- 해시맵(HashMap)은 해시 함수를 사용하여 데이터를 저장하며, 검색, 삽입, 삭제에 O(1)의 시간이 걸립니다.
- 트리맵(TreeMap)은 레드-블랙 트리를 사용하여 데이터를 저장하며, 검색, 삽입, 삭제에 O(log n)의 시간이 걸립니다.
- 해시맵은 빠른 검색, 삽입, 삭제 시간이 필요할 때 사용하며, 트리맵은 정렬된 데이터가 필요할 때 사용합니다.
스택 vs 큐
- 스택(Stack)은 후입선출(LIFO, Last In First Out) 구조로 데이터를 저장하며, push와 pop 연산을 제공합니다.
- 큐(Queue)는 선입선출(FIFO, First In First Out) 구조로 데이터를 저장하며, enqueue와 dequeue 연산을 제공합니다.
- 스택은 역추적(backtracking), 괄호 매칭(parentheses matching) 등에 사용되며, 큐는 작업 스케줄링, 너비 우선 탐색 등에 사용됩니다.
자료구조를 선택할 때 이러한 규칙을 고려하여 프로그램의 성능과 메모리 관리를 최적화할 수 있습니다.
참고 문헌:
- https://www.geeksforgeeks.org/
- https://docs.oracle.com/javase/8/docs/api/java/util/
- https://stackoverflow.com/