Vector는 ArrayList와 동일한 내부구조를 가지고 있습니다. ArrayList와 마찬가지로 Vector 내부에 값이 추가되면 자동으로 크기가 조절되며 그다음 객체들은 한 자리씩 뒤로 이동됩니다. 하지만 Vector와 Arraylist의 한가지 다른 점이 있는데 Vector는 동기화된 메소드로 구성되어 있기 때문에 멀티 스레드가 동시에 이 메소드들을 실행할 수 없고, 하나의 스레드가 실행을 완료해야만 다른 스레드들이 실행할 수 있습니다. 그래서 멀티 스레드 환경에서 안전하게 객체를 추가하고 삭제할 수 있습니다.
단점
벡터는 항상 동기화되는 장점이자 단점을 가지고 있습니다. 스레드가 1개일때도 동기화를 하기 때문에 ArrayList보다 성능이 떨어집니다. Arraylist는 기본적인 기능은 벡터와 동일하나 자동 동기화 기능이 빠져있고, 동기화 옵션이 존재합니다. 그리고 벡터에 비해 속도가 더 빠르기 때문에 벡터에 비해 많이 쓰이고 있습니다.
메서드
//기본 생성자로 생성하면 용량이 10으로 설정
public Vector() { ... }
//초기 용량을 설정하고 벡터 크기가 용랑보다 커지면 capacityIncrement만큼 용량 증가
public Vector(int initialCapacity, int capacityIncrement) { ... }
//초기 용량을 설정하는 코드
public Vector(int initialCapacity) { ... }
//컬렉션 타입을 파라미터로 입력 가능
public Vector(Collection<? extends E> c) { ... }
//맨 뒤에 Object를 추가
public synchronized boolean add(E e) { ... }
//특정 index에 Object를 추가
public void add(int index, E element) { ... }
//맨 뒤에 Collection의 Elements를 추가
public boolean addAll(Collection<? extends E> c) { ... }
//특정 index에 Collection의 Elements를 추가
public boolean addAll(int index, Collection<? extends E> c) { ... }
//add와 동일한 기능
public synchronized void addElement(E obj) { ... }
//동일한 Object를 제거
public boolean remove(Object o) { ... }
//특정 index의 Object를 제거
public E remove(int index) { ... }
//remove(object)와 동일한 기능
public synchronized boolean removeElement(Object obj) { ... }
//remove(index)와 동일한 기능
public synchronized void removeElementAt(int index) { ... }
//removeAll과 동일
public synchronized void removeAllElements() { ... }
//removeAll과 동일
public void clear() { ... }
//조건과 일치하는 Object를 제거
public boolean removeIf(Predicate<? super E> filter) { ... }
//vector의 size를 반환(실제 존재하는 데이터의 갯수)
public synchronized int size() { ... }
//vector의 용량의 size를 반환(vector의 크기)
public synchronized int capacity() { ... }
참고자료
- 코딩팩토리
- Java API Doc's
728x90
반응형
'Algorithm' 카테고리의 다른 글
[Algorithm] 삽입정렬 (0) | 2021.11.26 |
---|---|
[Algorithm] 선택정렬 (0) | 2021.11.26 |
[Algorithm] Stack (0) | 2021.09.21 |
[Algorithm] BOJ 1158 (0) | 2021.07.28 |
[Algorithm] BOJ 1260 (0) | 2021.07.28 |
댓글