른록노트

[DataStructure] Vector (Java) 본문

Programming/[DataStructure]

[DataStructure] Vector (Java)

른록 2021. 12. 3. 21:22

Vector

참고링크

Module java.base
Package java.util
Class Vector<E>
java.lang.Object
java.util.AbstractCollection<E>
java.util.AbstractList<E>
java.util.Vector<E>
Type Parameters:
E - Type of component elements
All Implemented Interfaces:
Serializable, Cloneable, Iterable<E>, Collection<E>, List<E>, RandomAccess
Direct Known Subclasses:
Stack
public class Vector<E>
extends AbstractList<E>
implements List<E>, RandomAccess, Cloneable, Serializable

설명

Vector는 ArrayList처럼 자동으로 배열 사이즈를 늘려주는 오브젝트입니다.
integer index로 컴포넌트에 접근 할 수 있으며 Vector의 크기는 Vector가 생성된 후 add와 remove를 동작 하기위해 필요에 따라 커지거나 줄어들 수 있습니다.

iterator 및 listIterator 메서드에 의해 반복해서 차례대로 반환할 수 있습니다.
iterator 작업을 할 때 add나 remove를 할 경우 ConcurrentModificationException이 발생합니다.(완벽하게 감지하지는 못함)

동기화처리가 다 되어있어 ArrayList보다 속도가 떨어집니다.
동시성 처리를 하지 않을경우는 ArrayList를 사용하는게 좋습니다.

메서드

void    add​(int index, E element)    
이 Vector의 지정된 위치에 지정된 요소를 삽입합니다.
boolean    add​(E e)    
지정된 요소를 이 Vector의 끝에 추가합니다.
boolean    addAll​(int index, Collection<? extends E> c)    
지정된 Collection의 모든 요소를 이 Vector의 지정된 위치에 삽입합니다.
boolean    addAll​(Collection<? extends E> c)    
지정된 Collection의 모든 요소를 ​​지정된 Collection의 Iterator에서 반환된 순서대로 이 Vector의 끝에 추가합니다.
void    addElement​(E obj)    
지정된 구성 요소를 이 벡터의 끝에 추가하여 크기를 1만큼 늘립니다.
int    capacity()    
이 벡터의 현재 용량을 반환합니다.
void    clear()    
이 Vector에서 모든 요소를 ​​제거합니다.
Object    clone()    
이 벡터의 클론을 반환합니다.
boolean    contains​(Object o)    
이 벡터에 지정된 요소가 포함되어 있으면 true를 반환합니다.
boolean    containsAll​(Collection<?> c)    
이 Vector에 지정된 Collection의 모든 요소가 포함되어 있으면 true를 반환합니다.
void    copyInto​(Object[] anArray)    
이 벡터의 구성 요소를 지정된 배열에 복사합니다.
E    elementAt​(int index)    
지정된 인덱스의 구성 요소를 반환합니다.
Enumeration<E>    elements()    
이 벡터의 구성 요소의 enumeration를 반환합니다.
void    ensureCapacity​(int minCapacity)    
필요한 경우 최소 용량 인수로 지정된 구성 요소 수 이상을 보유할 수 있도록 이 벡터의 용량을 늘립니다.
boolean    equals​(Object o)    
지정된 Object를 이 Vector와 동일한지 비교합니다.
E    firstElement()    
이 벡터의 첫 번째 구성 요소(인덱스 0의 항목)를 반환합니다.
void    forEach​(Consumer<? super E> action)    
모든 요소가 처리되거나 작업이 예외를 throw할 때까지 Iterable의 각 요소에 대해 지정된 작업을 수행합니다.
E    get​(int index)    
이 Vector의 지정된 위치에 있는 요소를 반환합니다.
int    hashCode()    
이 Vector의 해시 코드 값을 반환합니다.
int    indexOf​(Object o)    
이 벡터에서 지정된 요소가 처음 나타나는 인덱스를 반환하거나 이 벡터에 요소가 포함되어 있지 않으면 -1을 반환합니다.
int    indexOf​(Object o, int index)    
이 벡터에서 지정된 요소가 처음으로 나타나는 인덱스를 반환하고 인덱스에서 앞으로 검색하거나 요소를 찾을 수 없으면 -1을 반환합니다.
void    insertElementAt​(E obj, int index)    
지정된 인덱스에서 이 벡터의 구성 요소로 지정된 개체를 삽입합니다..
boolean    isEmpty()    
이 벡터에 구성 요소가 없는지 테스트합니다.
Iterator<E>    iterator()    
이 목록의 요소에 대한 반복자를 적절한 순서로 반환합니다.
E    lastElement()    
벡터의 마지막 구성 요소를 반환합니다.
int    lastIndexOf​(Object o)    
이 벡터에서 지정된 요소가 마지막으로 발생한 인덱스를 반환하거나 이 벡터에 요소가 없으면 -1을 반환합니다.
int    lastIndexOf​(Object o, int index)    
이 벡터에서 지정된 요소가 마지막으로 발생하는 인덱스를 반환하고 인덱스에서 역방향으로 검색하거나 요소를 찾을 수 없으면 -1을 반환합니다.
ListIterator<E>    listIterator()    
이 목록의 요소에 대한 목록 반복자를 적절한 순서로 반환합니다.
ListIterator<E>    listIterator​(int index)    
목록의 지정된 위치에서 시작하여 이 목록의 요소에 대한 목록 반복자를 적절한 순서로 반환합니다.
E    remove​(int index)    
이 Vector의 지정된 위치에 있는 요소를 제거합니다..
boolean    remove​(Object o)    
이 Vector에서 지정된 요소의 첫 번째 항목을 제거합니다. Vector에 요소가 포함되어 있지 않으면 변경되지 않습니다.
boolean    removeAll​(Collection<?> c)    
지정된 Collection에 포함된 모든 요소를 ​​이 Vector에서 제거합니다.
void    removeAllElements()    
이 벡터에서 모든 구성 요소를 제거하고 크기를 0으로 설정합니다.
boolean    removeElement​(Object obj)    
이 벡터에서 인수의 첫 번째(가장 낮은 인덱스) 항목을 제거합니다.
void    removeElementAt​(int index)    
지정된 인덱스에서 구성 요소를 삭제합니다.
boolean    removeIf​(Predicate<? super E> filter)    
주어진 술어를 만족하는 이 컬렉션의 모든 요소를 ​​제거합니다.
protected void    removeRange​(int fromIndex, int toIndex)    
이 목록에서 인덱스가 fromIndex(포함)와 toIndex(배타적) 사이에 있는 모든 요소를 ​​제거합니다.
void    replaceAll​(UnaryOperator<E> operator)    
이 목록의 각 요소를 해당 요소에 연산자를 적용한 결과로 바꿉니다.
boolean    retainAll​(Collection<?> c)    
지정된 Collection에 포함된 이 Vector의 요소만 유지합니다.
E    set​(int index, E element)    
이 Vector의 지정된 위치에 있는 요소를 지정된 요소로 바꿉니다.
void    setElementAt​(E obj, int index)    
이 벡터의 지정된 인덱스에 있는 구성 요소를 지정된 개체로 설정합니다.
void    setSize​(int newSize)    
이 벡터의 크기를 설정합니다.
int    size()    
이 벡터의 구성 요소 수를 반환합니다.
Spliterator<E>    spliterator()    
이 목록의 요소에 대해 지연 바인딩 및 페일패스트 분할기를 만듭니다.
List<E>    subList​(int fromIndex, int toIndex)    
fromIndex(포함)와 toIndex(배타) 사이의 이 목록 부분의 보기를 반환합니다
Object[]    toArray()    
이 Vector의 모든 요소를 ​​올바른 순서로 포함하는 배열을 반환합니다.
<T> T[]    toArray​(T[] a)    
이 Vector의 모든 요소를 ​​올바른 순서로 포함하는 배열을 반환합니다. 반환된 배열의 런타임 유형은 지정된 배열의 런타임 유형입니다.
String    toString()    
각 요소의 문자열 표현을 포함하는 이 Vector의 문자열 표현을 반환합니다.
void    trimToSize()    
이 벡터의 용량을 벡터의 현재 크기로 자릅니다.

사용법

import java.util.Vector;

public class VectorMain {
  public static void main(String[] args){
    Vector vector = new Vector();

    vector.add("test1");
    vector.add("test2");
    vector.add("test3");
    System.out.println(vector.contains("test1"));
    System.out.println(vector.get(0));
    System.out.println(vector.set(1,"test4"));
    System.out.println(vector.get(1));
    System.out.println(vector.indexOf("test3"));
    vector.remove(0);
  }
}

/* 결과
true
test1
test2
test4
2
*/

시간복잡도

n개의 요소에서 add할때 = 보통은 O(1)이지만 최악의 경우 배열을 새로 만들어서 복사할 때는 O(n)
n개의 요소에서 get할때 = O(1)
참고링크

공간복잡도

대부분의 Collection들은 O(n)
참고링크
참고링크

반응형
Comments