package com.use.java;
import java.util.*;
public class test {
//Vector는 ArrayList와 마찬가지로 Vector내부에 값이 추가되면 자동으로 크기가 조절되며 그다음 객체들은 한 자리씩 뒤로 이동
//Vector와 ArrayList 차이
//=>Vector는 멀티 스레드가 동시에 이 메소드들을 실행할 수 X. 그래서 멀티 스레드 환경에서 안전하게 객체를 추가하고 삭제할 수 있음
//동기화란 여러 개의 스레드가 한 개의 자원을 사용하고자 할 때 해당 스레드만 제외하고 나머지는 접근을 못하도록 막는 것
//Vector의 장점이자 단점 => 항상 동기화됨! => 스레드가 1개일때도 동기화를 하기 때문에 ArrayList보다 성능이 떨어짐
//Arraylist는 기본적인 기능은 벡터와 동일하나 자동 동기화 기능이 빠져있고, 동기화 옵션이 존재
public static void main(String[] args) {
//선언
Vector v1 = new Vector();//타입 미설정 Object로 선언된다.
Vector<Integer> num2 = new Vector<Integer>(); //타입설정 int타입만 사용가능
Vector<Integer> num3 = new Vector<>(); //new에서 타입 파라미터 생략가능
Vector<String> v2 = new Vector<String>(10);//초기 용량(capacity)지정
Vector<Integer> v3 = new Vector<Integer>(Arrays.asList(1,2,3)); //초기값 지정
//값 추가
Vector<Integer> v = new Vector<Integer>();
v.add(3); //값 추가
v.add(null); //null값도 add가능
v.add(1,10); //index 1뒤에 10 삽입
//값 출력 get(index)메서드 사용
Vector<Integer> list = new Vector<Integer>(Arrays.asList(1,2,3));
System.out.println(list.get(0));//index 0의 출력 : 1
for(Integer i : list) { //for문을 통한 전체출력
System.out.println(i);
}
//1
//2
//3
//크기 구하기
System.out.println(v.size()); //Vector 자료 개수 : 3
System.out.println(v.capacity()); //Vector 물리적크기 : 10
//값 삭제 remove(index) 사용
v.remove(1); //index 1 제거
v.removeAllElements(); //모든 값 제거
v.clear(); //모든 값 제거
}
}