카테고리 없음

[JAVA] Array vs. List vs. Vector

soowitty 2023. 11. 19. 00:14

Array

  • 같은 타입의 값만 관리
    • int 배열 : int 타입의 값만 관리
    • String 배열 : 문자열만 관리
  • 길이를 늘리거나 줄일 수 없음
    • 선언과 동시에 길이가 결정됨
    • 한번 결정된 배열의 길이는 늘이거나 줄일 수 없음
  • 논리적인 저장 순서 == 물리적인 저장 순서
    • 연속된 메모리 공간을 차지함
  • index를 통해 접근 가능

장점

  • 검색에 용이함
    • index를 통한 접근이 가능하기 때문
  • 관리에 용이함
    • 연속된 메모리 공간을 차지하기 때문

단점

  • 크기가 고정되기 때문에 데이터가 삭제되는 경우에 빈 공간이 생김 -> 메모리 낭비

 

List

  • 순서가 있는 데이터들의 집합
  • 불연속적인 메모리 공간에 포인터를 통해 각 데이터들이 연결됨
  • 크기가 동적으로 정해짐

Array vs. List

Array List
크기가 정해져 있음 크기가 변함 (동적)

 

프로그래밍을 할 때 저장할 값의 크기가 명확하지 않은 경우, 즉 자료형의 개수가 계속 변하는 상황일 때 리스트를 사용한다.

Vector

  • 배열의 한계(길이 제한)를 극복
  • 삽입되는 객체의 수가 늘어나면 자동으로 크기가 조절됨 -> 동적이다.
  • 객체 삽입
    • 맨 뒤에 삽입 : 공간이 모자라면 자동 늘림
    • 중간에 삽입 : 뒤에 존재하던 객체들이 한칸씩 뒤로 이동
  • 객체 삭제 : 삭제 후 한칸씩 앞으로 이동