남극

ArrayList와 Vector의 차이점 in Java 본문

JAVA/Data Structure

ArrayList와 Vector의 차이점 in Java

펭1구 2020. 2. 19. 11:21
ArrayList와 Vector는?

 

ArratList와 Vector는 "동적인 배열을 사용할 때 주로 사용"됩니다

그래서 처음 봤을 때는 이 두 가지의 역할이 같다고 느끼실 수 있습니다

Vector에 대해서 먼저 알아보겠습니다

 

 

Vector의 특징

 

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

현재는 재구성되어서 Collection 프레임워크에 들어가 있다고 보면 됩니다

특징을 한번 보시죠

1. 크기가 동적으로 조절이 가능한 동적 배열을 구현한다

2. 배열처럼 정수 인덱스로 배열에 접근이 가능하다

3. 동기화되어 있어 한 번에 하나의 스레드로 벡터의 메서드를 호출할 수 있다

 

 

ArrayList의 특징

 

ArrayList는 Collection Framework에 포함되어 있습니다

 

1. 크기를 동적으로 바꿀 수 있는 동적 배열이다

2. 자바의 표준 배열보다 느릴 수 있지만 배열에서의 조작이 많아질 때 유용하게 사용됩니다

3. 데이터 타입 설정이 불가능하기에 타입 객체를 참조해서 사용합니다

 

 

ArrayList와 Vector의 차이점

 

1. 동기화: ArrayList는 동기화가 되어있지 않지만 Vector는 동기화가 되어있다

이 말의 뜻은 ArrayList는 멀티 스레드(Multi-Thread)에서 작업이 가능하지만 Vector는 단일 스레드에서만 사용 이 가능합니다

 

2. 배열의 길이 증가: 배열의 최대 길이까지 왔을 때 ArrayList는 크기가 지정되어 있지 않을 때 50%씩 증가합니다. 하지만 Vector는 2배씩 크기가 증가한다는 점을 가지고 있습니다

3. 동기, 비동기: ArrayList는 비동기이어서 많은 스레드가 동시에 작동할 수 있으므로 한 번에 하나의 스레드 만 작동할 수 있는 Vector보다 좋은 성능을 가지고 있습니다

4. 스레드 안전: 멀티 스레드 프로그래밍에서 여러 스레드가 동시에 접근했을 때 프로그램 실행에 있어서 문제가 나지 않음을 뜻합니다. ArrayList는 동기화되어 있지 않아 동기화할 필요가 없고 Vector는 동기화되어있기 때문에 한 번에 하나의 스레드만 접근이 가능하여 안전합니다

차이점은 이렇게 정리할 수 있습니다

 

사실상 Vector는 정말 초기에 만들어서 초기 버전 호환성이 아니라면 많이 쓰지 않는다고 합니다. Vector를 꼭 사용해야 하는 이유가 없다면 ArrayList를 쓰시는 것을 추천드립니다

https://blog.naver.com/kkkths/221760312903

List 자료입니다.

'JAVA > Data Structure' 카테고리의 다른 글

Java Generics  (0) 2020.03.08
JAVA Queue  (0) 2020.03.08
Java Stack  (0) 2020.03.08
Iterator - Java  (0) 2020.02.26
JAVA - 자료구조 Collection Framework  (0) 2020.01.05
Comments