자바 자료구조#01. Array vs List

A Kind Dev·2022년 8월 5일
1

자바 자료구조

목록 보기
3/20

Array (배열)

1. 선언 및 초기화

int[] arr = new int[5];

값을 할당하지 않을 경우 Object 변수는 null, boolean은 false 로 초기화됨.
배열의 요소는 모두 자료형이 동일해야 함.

arr[0] = 1;

인덱스를 사용하여 값을 할당, 값을 탐색

Arrays.toString(arr); // Array 전체를 String으로 변환 (출력 시 많이 사용)
arr.length;			  // Array 의 길이

2. Array 는 Object는 아니지만 Reference Value로 취급된다.

  • 배열은 레퍼런스 주소(위치값)만 저장한 상태
    실제값은 메모리의 다른 공간에 저장하여 참조
  • 배열 변수는 arr의 첫번째 요소의 레퍼런스를 가리킴
    (= 배열의 첫번째 요소에 접근하게 됨)

3. 배열은 메모리상에 연달아 공간을 확보한다.

4. 미리 공간을 확보해 놓고 사용해야 한다. (단)

  • 처음 선언할 때부터 배열의 크기를 지정해야 한다.
    -> 메모리상에 배열의 크기만큼 연달아 공간을 확보할 수 있는지 확인해야 하기 때문

5. 한 번 만들어진 공간은 크기가 고정된다. (단)

6. 첫번째 위치만 알면 index로 상대적 위치를 빠르게 찾을 수 있다. (장)

--> 배열은 유연하지 못하다. 미리 몇 개가 필요한지 모르면 쓸 수 없다. 필요에 따라 크기가 늘어나거나 줄어들면 메모리 공간을 더 효율적으로 사용할 수 있을텐데..



List

1. 선언 및 초기화
배열과 마찬가지로 여러 개의 데이터를 한꺼번에 다룰 수 있는 자료구조


2. 메모리상에 연속되지 않아도 된다.

  • 메모리상에 List의 첫번째 요소가 저장될 공간만 알고 있으면 선언할 수 있다.
    다음 요소가 추가될 경우 메모리 상 어딘가에 추가된 요소를 저장하고 이전 요소부터 다음 요소로 Link 를 연결하기만 하면 요소를 추가할 수 있다. (Linked List)

3. 미리 공간을 확보해 놓지 않아도 된다. (장)

4. 필요에 따라 데이터가 늘어나거나 줄어든다. (장)

  • 데이터 추가하기 : Link 만 추가하면 됨
  • 데이터 삭제하기 : Link 를 삭제하고 이전 요소와 다음 요소 간의 Link 만 새로 추가해주면 됨. (삭제된 요소는 가비지 콜렉션 대상)

5. 첫번째 위치로부터 index로 목표 위치를 알려면 한 칸씩 이동하면서 찾아야 한다. (단)

  • 선형구조
  • Link 는 한쪽 방향으로만 연결되어 있기 때문에 다음 요소에서 이전 요소를 탐색하기 위해서는 다시 처음으로 돌아가서 해당 요소를 찾아야 한다.
  • Double Linked List : 양방향으로 이동이 가능

출처 : 프로그래머스 스쿨 "[JAVA] 어서와! 자료구조 알고리즘은 처음이지?"

profile
친절한 개발자

0개의 댓글