Purple Bobblehead Bunny

Backend/JAVA

[JAVA] Vector, 동적 배열 자료구조

준영어린이 2022. 3. 8. 13:34

Vector ?
동적 배열 자료구조는 기본적 배열의 경우에는 "배열 크기"를 지정하여, 크기 내의 범위에서
배열을 사용해야 하며,그 크기를 벗어나면 "ArrayIndexOutOfBoundsException"이 뜨게 된다. 반면에 동적 배열 자료구조, 즉 Vector는
자신의 범위를 넘어서게 되면 지정한 크기만큼 자동으로 배열을 늘려준다.

           

ArrayList와 거의 비슷하지만, 동기화의 여부에서 차이가 난다.

 

Vector는 동기화 보장 이 되어 있어서, 데이터를 처리할 때 안정성이 보장 되어 있지만,

ArrayList는 동기화가 되어 있지 않다.

 

Vetor는 Collection에서 List라고 하는 interface class를 이용하여 구현한 것이다.

-> List list1 = new Vector();

 

Vector를 사용하기 위해선 Vector를 import 해줘야 한다. 

그리고 Wrapper class를 넣는다.

 

Vector<Wrapper> __ = new Vector<>();

Vector<Integer> vector = new Vector<>();

 

Vector 주의점
1. ArrayList와 마찬가지로 생성자에 특정 값을 넣으면, 그 값만큼 배열이 생성된다.
(값이 없을 때 자동으로 10으로 설정 된다)
Vector<Integer> vector = new Vector<>(8); --> 배열이 크기는 8..
하지만, 설정한 크기를 넘어서게 되면 배열을 +8만큼 더 늘이게 된다.
이 값을 작게 설정하면, 배열을 자주 생성해도록 연산이 들어가게 되고, 값을 크게 설정하면 메모리 낭비가 되므로 조심

2. Thread-safe(쓰레드가 보장되어야 하는 환경)가 필요하지 않는 상황에서는 ArrayList를 쓰는 것을 권장하고 있다.
Thread-safe 해야하는 상황이라면, Vector를 사용

 

 

Vector 주요 메소드

형태 메소드 설명
boolean add(E e) e를 리스트의 맨 끝에 추가
void add(int index,E e) index 위치에 e를 벡터에 추가
boolean addAll(Collection<? extends E> c Collection인 c 전체를 벡터의 맨 끝에 추가
boolean addAll(int index, Collection<? extends E> c) index 위치에 c 전체를 벡터에 추가
void clear() 벡터의 내용을 전부 삭제
boolean contains(Object o) 벡터에 o가 있다면 true, 없으면 false
E get(int index) index 위치의 값을 반환
int indexOf(Object o) 벡터에서 o 값이 위치하는 곳을 반환
boolean isEmpty(0 배열이 비었다면 true, 아니면 false
Iterator<E> iterator() 현재 벡터의 iterator 반환
E remove(int index) index 위치의 값을 제거하고, 제거한 값을 반환
boolean remove(Object o) 벡터에서 o 값을 제거
protected void removeRange(int start, int end) start 부터 end까지 위치의 값을 제거
E set(int index, E element) index 위치의 값을 element로 대체
int size() 벡터의 크기를 반환
Object[] toArray() 벡터를 배열로 바꾸어서 반환

E는 ArrayList를 선언할 때, Generic에 사용한 Wrapper 클래스

 

 

 

 

기본적인 성능은 ArrayList와 같지만, 일반적인 "단일 스레드 프로그램" 에서는 현저히 낮은 성능을 보인다

 

일반적인 상황에서는 ArrayList를 사용하자.

'Backend > JAVA' 카테고리의 다른 글

[JAVA] Event Listener Button,Mouse  (0) 2022.03.08
[JAVA] Swing 이미지  (0) 2022.03.08
[JAVA] LinkedList  (0) 2022.03.07
[JAVA] ArrayList  (0) 2022.03.04
[JAVA] GUI 이벤트 구동 프로그래밍  (0) 2022.03.04