CS Fundamentals/Data Structures & Algorithms
[Data Structures] 자료 구조의 종류와 선택 기준
EndiYou
2025. 2. 19. 10:30
Java의 Collection과 Map을 이용해 알고리즘 문제를 해결할 때, 어떤 자료 구조를 사용할지 선택할 때 고려하는 기준을 정리한다.
Array
- 배열의 사이즈를 알 수 있는 경우 기본 Array를 사용하는 것이 가장 좋다.
- 배열은 물리 메모리의 연속된 공간을 확보 후 데이터를 저장한다.
- 데이터 접근 시 배열의 시작 지점 메모리 주소를 기준으로 특정 인덱스의 메모리 주소를 연산하는 공식을 사용한다.
더보기
Array 배열 내부 데이터의 메모리 주소를 구하는 공식
- [배열의 시작 주소] + ( [요소의 크기] × [인덱스 번호] )
- 배열의 시작 주소 : 0x00000000
- 요소의 크기 : (chat) 1byte, (int) 4btye, (double) 8byte
- 2번째 인덱스 메모리 주소: 0x00000000 + (4byte × 3) = 0x0000000C
ArrayList
- ArrayList는 Array의 사이즈를 모를 때 사용한다.
- ArrayList는 클래스로 구성되어 있고, Array는 바로 메모리에 바로 접근하기 때문에 Array의 효율이 조금 더 좋다.
- 몇 개의 데이터를 저장할지 확실하지 않지만 같은 타입의 데이터를 일단 저장해야 하는 경우 ArrayList를 사용한다.
ArrayDeque
- 맨 앞/뒤에 데이터 삽입/삭제 빈도가 많을 때 사용한다.
HashMap
- Array 타입의 DAT 사용이 불가능한 경우 HashMap을 사용한다.
- 전체 순회하며 조회하기 위한 서비스가 아니기 때문에 순회를 해야 하는 경우 다른 자료 구조를 사용해야 한다.
더보기
Array 타입의 DAT 사용이 불가능한 경우
- 인덱스 값이 정수가 아닌 다른 값이 필요한 경우 사용한다.
- 저장하려는 값의 개수가 1,000만 개를 넘는 경우 사용한다.