쿄쿄 IT

ArrayList / Vector 본문

취업 준비/기술 면접

ArrayList / Vector

쿄쿄 IT 2020. 12. 11. 16:22

Vector?

- 벡터 클래스는 예전의 자바에서 제공했던 레거시 클래스(Collections 프레임워크가 포함되어 있지 않던 초기 자바 버전에서 정의한 인터페이스)입니다.

- 현재는 재구성 및 설계되어서 현재의 Collections 프레임워크와 완벽하게 호환됩니다.

 

Vector의 특징

- 필요에 따라 크기를 동적으로 조절할 수 있는 동적배열을 구현합니다.

- 배열과 마찬가지로 정수 인덱스를 이용하여 배열에 액세스 할 수 있습니다.

- 동기화(Thread Safe) 되어있으며 한번에 하나의 스레드만 벡터의 메소드를 호출 할 수 있습니다.

 

 

ArrayList?

- Collections 프레임워크의 일부이며 java.uitl 패키지 내에 존재합니다.

- 벡터와 마찬가지로 동적 배열을 사용하기 위해 사용됩니다.

 

ArrayList의 특징

- 자바 표준 배열보다 약간 느릴수 있지만 배열에서 많은 조작이 필요로할때 유용하게 사용됩니다.

- 기본 데이터 타입(int, char )에 대해 만들수 없기때문에 Integer, Object 등의 객체에 대해 참조해서 사용합니다.

 

ArrayListVector의 주요 차이점

1. 동기화(Synchronize)

Vector가 동기화 된다면 ArrayList는 동기화가 되지않은 상태입니다.

쉽게말해 Vector는 한번에 하나의 스레드만 엑세스(접근) 가능하며, ArrayList는 동시에 여러 스레드가 작업할 수 있습니다.

ArrayList에서 여러 스레드가 동시에 엑세스하는 경우 개발자가 명시적으로 동기화하는 코드를 추가해야합니다.

 

2. 스레드 안전(Thread Safe)

스레드 안전이란 멀티 스레드 프로그래밍에서 여러 스레드가 동시에 접근이 이루어져도 프로그램 실행에 문제가 없음을 뜻합니다. 앞서 말했듯이 Vector는 동기화 되어있기 때문에 한번에 하나의 스레드만 접근할 수 있어 스레드 안전합니다. ArrayList는 동기화되지 않았기 때문에 명시적으로 동기화 할 필요가 있습니다.

 

3. 성능

ArrayList는 동기화 되지않았기 때문에 동기화 된 벡터보다 더 빠릅니다.

 

4. 크기 증가

VectorArrayList 모두 동적 배열 클래스로 최대 인덱스를 초과할 때 추가되는 인덱스 수가 다릅니다.

Vector는 현재 배열의 크기의 100%가 증가하며, ArrayList의 경우 현재 배열의 크기의 50%가 증가합니다.

 

 

Vector

ArrayList

동기화

동기화 O

동기화 X

스레드 안전

한번에 하나의 스레드만 엑세스(접근) 가능 (안전 O)

동시에 여러 스레드가 작업

(안전 X)

성능

ArrayList보다 느림

Vector보다 빠름

크기 증가 (동적 배열 클래스)

배열의 크기의 100%가 증가

배열의 크기의 50%가 증가

 

 

'취업 준비 > 기술 면접' 카테고리의 다른 글

추상클래스 / 인터페이스  (0) 2020.12.11
JSON / AJAX / XML  (0) 2020.12.11
자바스크립트 / 스크립트언어  (1) 2020.12.11
쿠키과 세션  (0) 2020.12.11
스프링 프레임워크  (0) 2020.12.10