1. Array(배열)
- 여러 개의 데이터를 하나의 이름으로 그룹핑해서 관리 하기 위한 자료구조이다.
2.List(리스트)
- 리스트도 배열과 같이 데이터를 그룹핑해서 관리하기 위한 자료구조
3. 차이점
- 배열의 크기는 length를 쓰고, 리스트의 크기는 size를 사용한다.
- 리스트의 경우, 쓰지 않는 메모리할당이 더 많아지기 때문에 크기가 정해져있는 데이터의 그룹핑을 하고 싶다면 배열이 더 효율적인 선택한다.
- ex) 문제에서 n번이라는 횟수(크기)가 정해졌을 때는 배열을 쓰고,
아무런 횟수(크기)가 주어지지 않았을 땐 ArrayList를 사용한다.

4. ArrayList
- 자바의 List 종류에는 ArrayList와 LinkedList가 있는데, 그 중 하나인 ArrayList는 Array(배열)와 List(리스트)의 장점을 합친 것이다.
- 배열의 특성인 index로 식별자를 쓰는 것이 가능하고,리스트 특성그대로 크기를 동적으로 사용할 수 있다.
- 나머지 차이는 배열의 차이와 그대로 동일하다.
5. 코드 비교
-
배열(Array)
- 배열은 크기가 정해져 있으며, 크기를 초과하여 데이터를 추가하려면 새로운 배열을 생성하여 데이터를 복사해야 한다.
- 배열의 요소를 추가하려면, 해당 인덱스에 값을 대입하면 된다.
- 배열의 요소를 제거하려면, 해당 인덱스의 값을 삭제하고, 빈 자리를 채우기 위해 나머지 요소를 한 칸씩 앞으로 이동해야 한다.
int[] arr = new int[5];
arr[0] = 1;
arr[1] = 2;
arr[1] = 0;
for (int i = 1; i < arr.length; i++) {
arr[i-1] = arr[i];
}
arr[arr.length-1] = 0;
- 리스트(List)
- 리스트는 크기가 가변적이며, 요소를 추가하거나 제거할 때마다 자동으로 크기가 조절된다.
- 리스트의 요소를 추가하려면, add() 메서드를 사용하면 된다.
- 리스트의 요소를 제거하려면, remove() 메서드를 사용하면 된다.
List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.remove(1);
- 따라서, 배열은 크기가 고정적이지만 인덱스를 통해 빠르게 요소에 접근할 수 있는 반면, 리스트는 크기가 가변적이지만 요소를 추가하거나 제거할 때 편리하게 사용할 수 있다.
5. 출처
https://suzyalrahala.tistory.com/24