[DataStructure] ArrayList vs Vector

Jay·2021년 3월 10일
0

Computer Science

목록 보기
38/50
post-thumbnail

ArrayList & Vector는 동적인 배열을 사용할 때 주로 사용 된다.

Vector

  • 현재 Collection Framework에 포함되어 있지만 이전에는 자바의 초기 버전에서 정의한 인터페이스이다.

특징

  1. 크기가 동적으로 조절이 가능한 동적 배열을 구현한다.
  2. 배열처럼 정수 인덱스로 배열에 접근이 가능하다.
  3. 동기화되어 있어 한 번에 하나의 스레드로 벡터의 메서드를 호출 할 수 있다.

ArrayList

  • Collection Framework에 포함되어 있다.

특징

  • 크기를 동적으로 바꿀 수 있는 동적 배열이다.
  • 자바의 표준 배열(Array)보다 느릴 수 있지만 배열에서의 조작이 많아 질 때 유용하게 사용된다.
  • 데이터 타입 설정이 불가하기에 타입 객체를 참조해서 사용한다.

차이점

  1. 동기화

    • ArrayList는 동기화되어 있지 않지만 Vector는 동기화가 되어있다.
    • 즉, ArrayList는 멀티 스레드에서 작업이 가능하지만 Vector는 단일 스레드 에서만 가능하다.
  2. 배열의 길이 증가

    • 배열의 최대 길이에 왔을 때 ArrayList는 크기가 지정되어 있지 않을 때 50%씩 증가한다.
    • Vector는 2배씩 크기가 증가한다.
  3. 동기, 비동기

    • ArrayList는 비동기이기에 많은 스레드가 동시에 작동할 수 있기에 한번에 하나의 스레드만 작동할 수 있는 Vector보다 좋은 성능을 가진다.
  4. Thread-safe

    • 멀티 스레드 프로그래밍에서 여러 스레드가 동시에 접근할 때 프로그램 실행에 있어 문제가 나지 않는 게 thread-safe이다. Arraylist는 동기화되어 있지 않아 동기화할 필요가 없고 Vector는 동기화 되어 있기에 한 번에 하나의 스레드만 접근이 가능하여 안전하다.
    • 멀티스레드가 아닌 상황에선 ArrayList가 매우 빠르다.
profile
developer

0개의 댓글