Vector는 자바의 List 인터페이스를 구현한 클래스 중 하나로, 내부적으로 배열을 사용하여 데이터를 저장한다.
하지만 ArrayList와는 다르게 동기화(synchronization)를 지원하기 때문에 멀티스레드 환경에서 유용할 수 있다.
Vector<String> vector = new Vector<>();
vector.add("Hello");
vector.add("World");
System.out.println(vector); // [Hello, World]
| 항목 | Vector | ArrayList |
|---|---|---|
| 동기화 | ✅ (멀티스레드 안전) | ❌ (멀티스레드 안전 아님) |
| 성능 | 느림 (동기화 오버헤드) | 빠름 |
| 사용 권장 여부 | ❌ (Legacy 클래스) | ✅ (대부분의 경우 권장) |
| 기본 용량 증가 방식 | 2배씩 증가 | 50%씩 증가 |
Vector<Integer> vec = new Vector<>();
vec.add(10); // 값 추가
vec.addElement(20); // add와 동일, 옛날 방식
vec.get(0); // 인덱스 접근
vec.set(0, 99); // 값 수정
vec.remove(1); // 요소 삭제
vec.size(); // 크기
vec.contains(99); // 포함 여부
현실적으로는 거의 사용하지 않는다.
Vector는 과거 자바 1.0부터 존재하던 레거시 클래스. 스레드 안정성이 필요하다면 다음과 같은 현대적인 대안을 고려해야 한다:
✅ Collections.synchronizedList(new ArrayList<>())
✅ CopyOnWriteArrayList (읽기 중심 작업일 때 유리)
기본 초기 용량: 10
용량이 꽉 차면 자동으로 2배 증가
배열 기반 자료구조 (Object[] elementData)
모든 public 메서드에 synchronized 키워드 적용
| 요약 |
|---|
| Vector는 ArrayList와 유사한 동적 배열 구조 |
| 스레드 안전하지만 성능 저하 우려 |
| 최신 자바에서는 대체제 사용 권장 |