Vector

sungs·2025년 6월 15일

자바

목록 보기
13/95

📌 Vector란?

Vector는 자바의 List 인터페이스를 구현한 클래스 중 하나로, 내부적으로 배열을 사용하여 데이터를 저장한다.
하지만 ArrayList와는 다르게 동기화(synchronization)를 지원하기 때문에 멀티스레드 환경에서 유용할 수 있다.

Vector<String> vector = new Vector<>();
vector.add("Hello");
vector.add("World");
System.out.println(vector); // [Hello, World]

🆚 Vector vs ArrayList

항목VectorArrayList
동기화✅ (멀티스레드 안전)❌ (멀티스레드 안전 아님)
성능느림 (동기화 오버헤드)빠름
사용 권장 여부❌ (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를 써야 할까?

현실적으로는 거의 사용하지 않는다.

Vector는 과거 자바 1.0부터 존재하던 레거시 클래스. 스레드 안정성이 필요하다면 다음과 같은 현대적인 대안을 고려해야 한다:

✅ Collections.synchronizedList(new ArrayList<>())

✅ CopyOnWriteArrayList (읽기 중심 작업일 때 유리)

🧠 Vector 내부 구조 간단히 살펴보기

  • 기본 초기 용량: 10

  • 용량이 꽉 차면 자동으로 2배 증가

  • 배열 기반 자료구조 (Object[] elementData)

  • 모든 public 메서드에 synchronized 키워드 적용

📝 결론

요약
Vector는 ArrayList와 유사한 동적 배열 구조
스레드 안전하지만 성능 저하 우려
최신 자바에서는 대체제 사용 권장
profile
앱 개발 공부 중

0개의 댓글