Vector<E> — 자라나는 객체 배열
Vector — 자라나는 객체 배열
자라나는(growable) 객체 배열을 구현하는 클래스예요. 배열처럼 정수 인덱스로 접근할 수 있는 컴포넌트를 담지만, 생성 후 항목을 추가·제거함에 따라 크기가 커지거나 줄어들 수 있어요.
본문
public class Vector<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, Serializable
각 벡터는 capacity(용량)와 capacityIncrement를 유지해 저장 관리를 최적화해요. capacity는 항상 벡터 크기 이상이며, 컴포넌트가 추가되면 capacityIncrement 크기만큼의 청크(chunk)로 저장 공간이 늘어나므로 보통 더 커요. 큰 수의 컴포넌트를 삽입하기 전에 용량을 늘리면 증분 재할당을 줄일 수 있어요.
이 클래스의 iterator와 listIterator 메서드가 반환하는 반복자는 fail-fast예요. 반복자가 생성된 후 반복자 자신의 remove·add 메서드를 통한 경우를 제외하고 벡터가 구조적으로 수정되면 ConcurrentModificationException을 던져요. 반면 elements 메서드가 반환하는 Enumeration은 fail-fast가 아니에요.
참고: fail-fast 동작은 비동기 동시 수정 상황에서 단단한 보장을 하기 어렵기 때문에 최선의 노력(best-effort)으로 ConcurrentModificationException을 던져요. 프로그램의 정확성을 이 예외에 의존해서는 안 돼요.
Vector는 ArrayList로 대체된 레거시 클래스로, 새 코드에서는 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