Array(배열)와 List(리스트)의 차이(+ArrayList란..??)

0

자바

목록 보기
16/17

why??

알고리즘을 풀면서 크기를 알면 리스트, 모르면 배열을 사용해왔는데 구체적으로 어떠한 차이가 있는지, 기능적 차이가 있는지 궁금해서 정리하게 됨

배열(Array)

  • 고정 길이 자료 구조
    • 배열을 생성한 후에는 배열의 크기를 변경할 수 없다
  • 기본 유형과 참조 유형 모두를 저장할 수 있다
  • 배열은 리스트보다 빠르지만 덜 유연

리스트(List)

  • 가변 길이 자료 구조
    • 리스트를 생성한 후에도 리스트의 크기를 변경할 수 있다
  • 참조 유형만 저장할 수 있다
  • 배열보다 유연하지만 느리다

기본 유형, 참조 유형이란??
기본 유형 : boolean, byte, short, int, long, float, double, char
참조 유형 : class, interface, array
기본 유형의 변수는 값을 직접 저장하는 반면 참조 유형의 변수는 객체에 대한 참조를 저장
기본 유형의 변수의 크기는 값의 크기와 같지만 참조 유형의 변수의 크기는 객체의 크기와 같이 않다
기본 유형의 변수는 객체의 멤버가 될 수 없지만 참조 유형의 변수는 객체의 멤버가 될 수 있다

// 배열
// 배열
int[] arr = new int[5];
arr[0] = 1;
arr[1] = 2;
arr[2] = 3;
arr[3] = 4;
arr[4] = 5;

// 리스트
List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(5);

ArrayList??

  • 배열과 유사한 자료 구조이지만 배열과 달리 가변 길이 자료 구조
    • 즉, ArrayList를 생성한 후에도 ArrayList의 크기를 변경할 수 있다
  • ArrayList는 배열과 달리 기본 유형을 저장할 수 없다
  • 배열보다는 느리지만, 유연하다
// 배열
int[] arr = new int[5];
arr[0] = 1;
arr[1] = 2;
arr[2] = 3;
arr[3] = 4;
arr[4] = 5;

// ArrayList
List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(5);

// 배열의 크기를 변경할 수 없습니다.
arr.length = 10; // 오류

// ArrayList의 크기를 변경할 수 있습니다.
list.size = 10; // OK
profile
목적지가 있는 개발자 백재원입니다.

0개의 댓글