728x90
반응형
1. Vector 컬렉션
Vector 은 ArrayList 와 같이 List 인터페이스를 상속받는 컬렉션 프레임워크이다. 사용법은 ArrayList와 크게 다르지 않다.
컬렉션 프레임워크가 나오기전에 가변 개수의 배열이 필요한 과거에 사용되었으며, 현재는 성능상 거의 사용하지 않고 ArrayList를 사용한다. 하지만 호환성을 위해 제거하지 않고 남겨두었다.
특징
- 동적으로 원소를 추가할 수 있다. 즉, 크기가 자동으로 늘어난다.
- 맨 마지막 위치에 데이터를 삽입하거나 삭제할 때는 문제가 없지만 중간 데이터의 삽입 삭제는 배열과 같은 매커니즘으로 동작한다.
- 배열과 마찬가지로 인덱스를 이용하여 각 데이터에 직접 접근할 수 있다.
2. Vector 사용법
Vector 컬렉션의 메서드는 ArrayList와 거의 비슷하다.
메서드 | 설명 |
boolean add(E element) | 벡터의 맨 뒤에 element 추가 |
void add(int index, E element) | 인덱스 index에 element 추가 |
int capacity() | 벡터의 현재 용량 리턴 |
boolean addAll(Collection<> c) | 컬렉션 c의 모든 요소를 벡터의 맨 뒤에 추가 |
void clear() | 벡터의 모든 요소 삭제 |
int indexOf(Object O) | o와 같은 첫 번째 요소의 인덱스 리턴, 없으면 -1 리턴 |
E elementAt(int index) | 인덱스 index 의 요소 리턴 |
E get(int index) | 인덱스 index의 요소 리턴 |
boolean isEmpty() | 벡터가 비어 있으면 true 리턴 |
(1) Vector 생성
Vector 컬렉션의 구조는 ArrayList나 LinkedList와 별반 다르지 않다.
// 타입설정 -> int 타입만 사용 가능
Vector<Integer> num = new Vector<>();
// 초기 용량 (capacity) 지정
Vector<String> v2 = new Vector<>(10);
// 초기값 지정
Vector<Integer> v3 = new Vector<>(Arrays.asList(1,2,3));
(2) Vector 요소 추가
Vector<Integer> v = new Vector<>();
// v에 요소 추가하기
v.add(5);
v.add(4);
v.add(-1);
// index 2 인 위치에 값 4 추가하기 (삽입하기 위해 뒤에 요소들은 한칸씩 뒤로 이동)
v.add(2,4);
(3) Vector 요소 삭제
Vector<Integer> v = new Vector<Integer>();
v.add(5);
v.add(100);
v.add(-1);
v.remove(1); // 100 제거
System.out.println(v); // [5, -1]
// 모든 값 제거 방법 2 가지
v.clear(); // vector 안에 들어있는 요소만 삭제, vector 용량은 그대로 존재
v.removeAllElements(); // 요소도 제거하고 용량도 0으로 초기화
(4) Vector 용량 & 크기 구하기
- capacity() 메서드는 용량을 반환한다. ArrayList 에서는 사용할 수 없다.
// Vector 초기 용량 10으로 생성
Vector<Integer> v = new Vector<>(10);
// 값 추가
v.add(1);
v.add(2);
// Vector 자료 총 개수(size)
System.out.println(v.size()); // 2
// Vector 용량
System.out.println(v.capacity()); // 10
(5) Vector 데이터 출력
Vector<Integer> list = new Vector<Integer>(Arrays.asList(1,2,3));
//1번째 index 출력
System.out.println(list.get(1));
// for문을 통한 전체 요소 출력
for(Integer i : list) {
System.out.println(i);
}
// Iterator를 통한 전체 요소 출력
Iterator iterator = list.iterator();
while(iterator.hasNext()){
System.out.println(iter.next()); // 값 출력
}
3. Vector 와 ArrayList 의 차이점
(1) 동기화 (Synchronize)
- Vector 는 동기화가 가능하고 ArrayList 는 동기화가 되지 않은 상태
- 즉, Vector 는 한번에 하나의 스레드만 접근이 가능하고 ArrayList는 동시에 여러 스레드가 작업할 수 있다.
(2) 스레드 안전 (Thread Safe)
- 스레드 안전이란, 멀티 스레드 프로그래밍에서 여러 스레드가 동시에 접근이 이루어져도 프로그램 실행에 문제가 없음을 의미한다.
- ArrayList 는 동기화가 되어있지 않기 때문에 명시적으로 동기화할 필요가 있다.
반응형
'Java' 카테고리의 다른 글
[Java] parseInt() VS valueOf() 차이점 (0) | 2024.02.25 |
---|---|
[Java] 객체지향 언어의 특징 (0) | 2023.12.14 |
[Java] Map 의 getOrDefault 사용법 (0) | 2023.11.20 |
[Java] int와 Integer의 차이 (0) | 2023.11.15 |
LocalDate Class (연, 월, 일) (0) | 2023.11.14 |