Java Vector 완벽 가이드: 사용법, 특징, ArrayList와의 비교
Java Vector 이해하기
Vector 클래스는 List 인터페이스를 구현하며 ArrayList와 유사한 크기 조절 가능한 배열을 제공합니다. ArrayList와 달리 Vector의 모든 변경 연산은 동기화되어 있어 본질적으로 스레드 안전하지만, 단일 스레드 환경에서는 성능이 저하될 수 있습니다.
Java Vector vs ArrayList
ArrayList와 Vector 모두 동적 배열을 제공하지만, 동시성 처리 방식에서 차이가 있습니다:
- Vector: 각 메서드 호출마다 동기화되어 인스턴스 락을 획득한 후 실행합니다.
- ArrayList: 기본적으로 비동기화이며, 필요시
Collections.synchronizedList()로 스레드 안전성을 추가할 수 있습니다.
연산당 락 오버헤드 때문에 Vector는 멀티스레드 환경에서 성능 저하가 발생할 수 있으며, 스레드 안전성이 필요하지 않을 때는 ArrayList가 일반적으로 더 나은 성능을 보입니다.
팁: 대부분의 애플리케이션에서는 ArrayList를 선호하세요. 레거시 코드에서 요구하거나 추가 래퍼 없이 내장 동기화가 필요할 때만 Vector를 사용하세요.
Vector 생성하기
제네릭 타입으로 Vector를 인스턴스화할 수 있습니다:
Vector<Type> vector = new Vector<>();
예제:
// Integer Vector
Vector<Integer> numbers = new Vector<>();
// String Vector
Vector<String> words = new Vector<>();
Vector의 주요 메서드
Vector 클래스는 ArrayList를 미러링하는 전체 리스트 연산 세트를 제공합니다. 자주 사용되는 메서드는 다음과 같습니다:
add(E element) – 요소 추가
add(int index, E element) – 특정 위치에 삽입
addAll(Collection<? extends E> c) – 대량 추가
get(int index) – 인덱스로 조회
remove(int index) – 인덱스로 삭제
clear() – 모든 요소 제거
size() – 현재 요소 수
contains(Object o) – 존재 여부 확인
toArray() – 배열로 변환
toString() – 문자열 표현
set(int index, E element) – 인덱스 위치 요소 교체
Vector에 요소 추가하기
add(element) – 요소 추가
add(index, element) – 특정 인덱스에 삽입
addAll(vector) – 다른 벡터의 모든 요소 추가
예제:
import java.util.Vector;
class Main {
public static void main(String[] args) {
Vector<String> mammals = new Vector<>();
mammals.add("Dog");
mammals.add("Horse");
mammals.add(2, "Cat");
System.out.println("Vector: " + mammals);
Vector<String> animals = new Vector<>();
animals.add("Crocodile");
animals.addAll(mammals);
System.out.println("New Vector: " + animals);
}
}
출력
Vector: [Dog, Horse, Cat] New Vector: [Crocodile, Dog, Horse, Cat]
Vector 요소 접근하기
get(index) – 인덱스로 요소 조회
iterator() – 순차 접근용 이터레이터 획득
예제:
import java.util.Iterator;
import java.util.Vector;
class Main {
public static void main(String[] args) {
Vector<String> animals = new Vector<>();
animals.add("Dog");
animals.add("Horse");
animals.add("Cat");
String element = animals.get(2);
System.out.println("Element at index 2: " + element);
Iterator<String> iter = animals.iterator();
System.out.print("Vector: ");
while(iter.hasNext()) {
System.out.print(iter.next() + ", ");
}
}
}
출력
Element at index 2: Cat Vector: Dog, Horse, Cat,
Vector에서 요소 제거하기
remove(index) – 지정된 위치의 요소 삭제
clear() – 모든 요소를 효율적으로 제거
예제:
import java.util.Vector;
class Main {
public static void main(String[] args) {
Vector<String> animals = new Vector<>();
animals.add("Dog");
animals.add("Horse");
animals.add("Cat");
System.out.println("Initial Vector: " + animals);
String removed = animals.remove(1);
System.out.println("Removed Element: " + removed);
System.out.println("New Vector: " + animals);
animals.clear();
System.out.println("Vector after clear(): " + animals);
}
}
출력
Initial Vector: [Dog, Horse, Cat] Removed Element: Horse New Vector: [Dog, Cat] Vector after clear(): []
추가 Vector 메서드
| 메서드 | 설명 |
set(int index, E element) | 지정된 위치의 요소 교체 |
size() | 요소 수 반환 |
toArray() | 내용을 배열로 변환 |
toString() | 벡터의 문자열 표현 |
contains(Object o) | 지정된 요소 포함 여부 확인 |