Vector<E> — 자라나는 객체 배열

Vector — 자라나는 객체 배열

자라나는(growable) 객체 배열을 구현하는 클래스예요. 배열처럼 정수 인덱스로 접근할 수 있는 컴포넌트를 담지만, 생성 후 항목을 추가·제거함에 따라 크기가 커지거나 줄어들 수 있어요.

출처: Java API Reference

본문

public class Vector<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, Serializable

각 벡터는 capacity(용량)와 capacityIncrement를 유지해 저장 관리를 최적화해요. capacity는 항상 벡터 크기 이상이며, 컴포넌트가 추가되면 capacityIncrement 크기만큼의 청크(chunk)로 저장 공간이 늘어나므로 보통 더 커요. 큰 수의 컴포넌트를 삽입하기 전에 용량을 늘리면 증분 재할당을 줄일 수 있어요.

이 클래스의 iteratorlistIterator 메서드가 반환하는 반복자는 fail-fast예요. 반복자가 생성된 후 반복자 자신의 remove·add 메서드를 통한 경우를 제외하고 벡터가 구조적으로 수정되면 ConcurrentModificationException을 던져요. 반면 elements 메서드가 반환하는 Enumeration은 fail-fast가 아니에요.

참고: fail-fast 동작은 비동기 동시 수정 상황에서 단단한 보장을 하기 어렵기 때문에 최선의 노력(best-effort)으로 ConcurrentModificationException을 던져요. 프로그램의 정확성을 이 예외에 의존해서는 안 돼요.

VectorArrayList로 대체된 레거시 클래스로, 새 코드에서는 ArrayList를 사용하는 것이 권장돼요.

주요 생성자

  • Vector() — 기본 용량(10)으로 생성해요.
  • Vector(int initialCapacity) — 지정된 초기 용량으로 생성해요.
  • Vector(int initialCapacity, int capacityIncrement) — 초기 용량과 증분으로 생성해요.
  • Vector(Collection<? extends E> c) — 컬렉션의 요소를 담아 생성해요.

주요 메서드

  • add(E e) / add(int index, E) — 요소를 추가해요.

  • get(int index) — 지정된 인덱스의 요소를 반환해요.

  • set(int index, E) — 지정된 인덱스의 요소를 교체해요.

  • remove(int index) — 지정된 인덱스의 요소를 제거해요.

  • size() — 요소 수를 반환해요.

  • capacity() — 현재 용량을 반환해요. ensureCapacity(int)로 크기를 미리 늘릴 수도 있어요.

  • elementAt(int) / addElement(E) / elements() — Enumeration 기반의 레거시 메서드예요.

  • 도입 시점(Since): 1.0

더 알아보기 (Learn more)