본 글은 생활코딩의 List와 Array 비교글을 참고하여 작성하였습니다.

Array와 List의 차이

Array

  • 배열은 다수의 데이터를 그룹핑해서 효율적으로 관리할 수 있는 데이터 스트럭쳐이다. 배열의 가장 큰 특징은 index가 있다는 것이다. 인덱스를 알고 있다면 인덱스를 이용하여 데이터를 가져올 수 있다.
  • 인덱스를 이용한 데이터 조회는 매우 빠르다. 인덱스를 통해서 데이터를 가져오기 위해서는 데이터에 대한 인덱스 값이 고정 되어야 한다.
  • 어떤 엘리먼트가 삭제되면, 삭제된 상태를 빈 공간으로 남겨두어야 한다.
    • 하지만 이것은 메모리 낭비!
    • 배열에 데이터가 있는지 없는지 확인하는 로직도 필요함.

배열에서 데이터 추가는 ? index를 유지하면서 값을 추가해야하기 때문에 사실상 데이터 교체와 같음

List

리스트는 순서가 있는 엘리먼트의 모임으로 배열과는 다르게 빈 엘리먼트는 절대 허용하지 않는다. (배열은 값 조회에 빠르고 list는 값 추가, 삭제가 빠름)

  • 처음, 끝, 중간에 엘리먼트를 추가, 삭제 가능한 기능
  • 리스트에 데이터가 있는지를 체크하는 기능
  • 리스트의 모든 데이터에 접근할 수 있는 기능

자바스크립트의 경우 배열에 리스트 기능을 포함하고 있다.

numbers = [10, 20,30,40,50];
numbers.splice(3,1); // numbers 배열의 3번째 인덱스 삭제
for (i =0 ; i<numbers.length; i++){
    console.log(numbers[i]);
}

결과 : 
10
20
30
50

파이썬은 배열은 없고 리스트만 있다. 기능은 자바스크립트의 배열과 같지만 이름이 리스트이다. (자바스크립트는 왜 헷갈리게 배열로 이름 지어놓은거임....)

numbers = [10,20,30,40,50]
numbers.pop(3); // 3번쨰 인덱스 삭제
for num in numbers:
    print(num);

자바스크립트나 파이썬에는 개발자들이 자주 사용하는 기능인 리스트를 언어에 포함해서 쉽게 사용할 수 있도록 배려함

자바는 리스트, 배열을 개별적으로 지원

배열

int[] numbers ={10,20,30,40,50};

리스트

ArrayList numbers = new ArrayList();
numbers.add(10);
numbers.add(20);
numbers.add(30);
numbers.add(40);
numbers.add(50);

numbers.remove(3);

자바에는 배열, 리스트 (ArrayList, LinkedList)가 있다.

ArrayList는 위에서 언급한 Dynamic List와 같이 동작함