본문 바로가기

자료구조

[자료구조] 여러가지 배열 종류

728x90

1. 기본 배열 (Array)

  • 정의: 동일한 타입의 요소가 고정된 크기로 연속된 메모리 공간에 저장된 자료구조입니다.
  • 특징:
    • 고정 크기: 배열의 크기는 선언 시 고정되며 변경할 수 없습니다.
    • 빠른 접근: 인덱스 값으로 각 요소에 O(1) 시간 복잡도로 접근 가능.
    • 메모리 효율성: 연속적인 메모리 공간을 사용하여 메모리 접근이 빠릅니다.
  • 용도: 크기가 변하지 않는 데이터 집합을 저장할 때 유용합니다.
int[] numbers = {1, 2, 3, 4, 5};
System.out.println("첫 번째 요소: " + numbers[0]); // 1
System.out.println("세 번째 요소: " + numbers[2]); // 3

 

 

2. 동적 배열 (Dynamic Array)

  • 정의: 크기를 동적으로 조정할 수 있는 배열로, 요소 추가/삭제 시 자동으로 크기가 조정됩니다.
  • 특징:
    • 크기 변경 가능: 배열이 가득 차면 더 큰 메모리 공간을 할당해 확장(일반적으로 2배)합니다.
    • 빠른 접근: 인덱스를 통해 O(1) 시간에 접근할 수 있습니다.
    • 성능: 추가 작업 시 배열이 꽉 차면 재할당/복사로 인해 O(n)의 시간 복잡도가 발생할 수 있지만, 평균적으로 O(1) 성능을 가집니다.
  • 용도: 크기가 변동될 수 있는 리스트가 필요할 때 사용합니다.
import java.util.ArrayList;

ArrayList<Integer> dynamicArray = new ArrayList<>();
dynamicArray.add(10);
dynamicArray.add(20);
dynamicArray.add(30);
System.out.println("첫 번째 요소: " + dynamicArray.get(0)); // 10
System.out.println("크기: " + dynamicArray.size()); // 3

 

 

3. 연관 배열 (Associative Array)

  • 정의: 키-값 쌍으로 데이터를 저장하는 자료구조, 흔히 해시맵(HashMap)이나 딕셔너리(Dictionary)로 불립니다.
  • 특징:
    • 키 기반 접근: 각 값은 고유 키로 저장되며, 키를 통해 빠르게 값을 찾을 수 있습니다.
    • 유연한 데이터 타입: 키와 값 모두 다양한 타입으로 지정 가능.
    • 빠른 검색: 해시 함수를 사용하여 O(1)의 시간 복잡도로 값에 접근 가능.
  • 용도: 키 기반으로 데이터를 관리하고 검색이 필요할 때 유용합니다.
import java.util.HashMap;

HashMap<String, String> associativeArray = new HashMap<>();
associativeArray.put("name", "John");
associativeArray.put("occupation", "Developer");
System.out.println("Name: " + associativeArray.get("name")); // John
728x90

'자료구조' 카테고리의 다른 글

[자료구조] 큐(Queue)  (0) 2024.10.12
[자료구조] 스택(Stack) Java 예제 포함  (1) 2024.10.11
[자료구조] Array 배열  (0) 2024.08.16
[자료구조] Linked List  (0) 2024.08.15