남극
ArrayList와 Vector의 차이점 in Java 본문
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 |