상위 클래스
java.util.Vector
- 컬렉션 프레임워크가 등장하기 이전에 사용된, 객체배열에 관한 컬렉션 클래스
: 저장 가능 용량 초과 시, 기존의 용량을 증가시킨 객체배열을 재생성한 후 기존 데이터를 복사하여 사용- 일부 메서드에서
synchronized
키워드 사용
: 해당 메서드 호출 시 강제 동기화로 인해 단일 스레드에서의 성능 저하가 발생java.util.ArrayList
로 대체되어 현재는 거의 사용되지 않음
: 기존 코드와의 호환성을 유지하기 위한 목적으로만 존재
ps) 위 도식에 포함되어 있지만 따로 다루지 않은 인터페이스/클래스는 여기에 정리함
- 별도의 초기화 작업 없이 그대로 빈 스택을 생성
java.util.Vector
의 필드인 Object 배열을 스택으로 사용하지만 그 크기를 사용자가 직접 설정하는 것은 불가능
: 주어진 생성자는 매개변수를 사용하지 않고, 이 생성자가java.util.Stack
의 유일한 생성자이기 때문- 최초 생성된 스택의 용량은 초기값인 10으로 고정
java.util.Stack의 push() 메서드
public Object push(Object item)
- 스택에 새로운 데이터를 추가
java.util.Vector
의addElement()
메서드를 호출
java.util.Vector의 addElement(), add(), grow() 메서드
public synchronized void addElement(Object obj)
- 새로운 데이터를 지정한 배열의 맨 뒤에 추가
- 이 메서드는 동기화되어 실행됨
: 이 메서드에서 호출한add()
가 실행 종료되기 전에는 다른 메서드가 배열의 데이터 변경 불가
private void add(Object e, Object[] elementData, int s)
- 지정한 배열에 더 이상 데이터를 저장할 수 없으면
grow()
를 호출하여 배열의 크기 증가- 지정한 데이터를 배열에 저장
private void grow()
- 배열에 더 이상 데이터를 저장할 수 없으면 배열의 크기는 기존의 2배로 증가
cf) 동일한 상황일 때java.util.ArrayList
에서의 배열 크기는 기존의 1.5배로 증가
java.util.Stack의 pop() 메서드
public synchronized Object pop()
- 스택의 꼭대기에 저장된 데이터를 배열에서 삭제
java.util.Vector
의removeElementAt()
메서드의 실행이 완료된 이후에 배열을 사용하는 다른 메서드를 호출 가능
java.util.Vector의 removeElementAt() 메서드
public synchronized void removeElementAt(int index)
- 배열의 지정된 인덱스에 저장된 데이터를 삭제
- 배열에서의 삭제와 동일한 방식: 데이터 삭제 시 시간복잡도는
- 지정한 인덱스가 배열의 인덱스 범위를 초과할 시 Exception 발생
java.util.Stack의 peek() 메서드
public synchronized Object peek()
- 스택에 가장 최근에 저장된 데이터를 반환
java.util.Vector
의elementAt()
메서드의 실행이 종료된 이후부터 다른 메서드가 배열 이용 가능
java.util.Vector의 elementAt(), elementData() 메서드
public synchronized Object elementAt(int index)
- 지정한 인덱스가 배열의 범위에 속하면
elementData()
를 호출
E elementData(int index)
- 배열의 지정한 인덱스에 저장된 데이터를 반환
java.util.Stack의 search() 메서드
public synchronized int search(Object o)
- 지정한 객체를 Stack에서 찾아서 그 위치를 반환(찾지 못할 시 -1을 반환)
- 배열 인덱스와는 달리, 위치는 0이 아닌 1부터 시작
: Stack의 크기에서 현재 인덱스를 뺀 값을 반환하기 때문
java.util.Vector의 lastIndexOf() 메서드
public synchronized int lastIndexOf(Object o)
- 객체 배열의 마지막부터 역순으로 탐색하여 지정한 객체의 위치를 반환
public synchronized int lastIndexOf(Object o, int index)
- 객체 배열의 지정한 위치부터 역순으로 탐색하여 지정한 객체의 위치를 반환