Array(배열)

창둥·2023년 12월 4일
post-thumbnail

Array (배열)

int[] ints = new int[] {1,2,3,4};

배열은 같은 타입의 데이터들을 저장하는 자료구조입니다. 연속된 메모리 공간에 데이터들을 저장하기에 데이터들은 각각 이름이 없지만 인덱스로 접근 가능합니다.

인덱스가 0부터 시작하는 이유 : ints가 표시하는 첫 번째 원소로 부터 몇 번째 떨어져 있다(offset)

배열(객체)

String[] names = {"one", "two", "three"};
  • 연속된 메모리 공간에 데이터가 아닌 ‘레퍼런스’ 저장
  • 실제 데이터 들은 연속되지 않은 공간에 저장

왜 사용할까?

연속된 메모리 공간에 데이터들을 저장하기 떄문에 cpu cache를 통해 같은 배열에 있는 다을 데이터에 접근하는 시간을 줄일 수 있다.

배열의 한계

  1. 배열을 생성할 때 크기를 정해야한다.
    • 데이터의 수가 정확하지 않을 때 크기를 정하기 어려움
    • 작게하면 원하는 만큼의 데이터를 담지 못할 수 있고, 크게한다면 메모리가 낭비될 수 있다.
  2. 데이터를 삽입하거나 제거해야하는 경우, 배열은 변경만 할 수 있다.
  3. 배열의 원소 값을 중복없이 관리하기 힘들다.

Dynamic Array (동적 배열)

크기가 변할 수 있는 Array를 의미합니다. 배열과는 다르게 데이터를 더하거나 빼는 것이 가능한 자료구조입니다.
resizable array, array list 등등으로 불림

Associative Array (연관 배열)

  • key - value pair들을 저장하는 ADT
  • 같은 key를 가지는 pair는 최대 한 개만 존재(중복 x)
  • map, dictionary라고 불리기도 함

ADT(추상자료형) : 구현방법은 명시하지 않고 자료구조의 특성들과 어떤 operations들이 있는지를 설명하는 자료구조의 형태
- ex) stack, queue

profile
개발꿈나무

0개의 댓글