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 |