본문 바로가기
자료구조

[자료구조] Vector

by eddypark 2023. 11. 6.

- ArrayList와 비슷한 성질(크기가 가변적으로 변함)을 가지고 있다.

- ArrayList와 다르게 동기화를 제공한다.

- 동기화를 제공하기 때문에 멀티 스레드 환경에서 안전(Thread Safe) 하며 이로 인해 낮은 성능을 보인다.

 


생성

import java.util.Vetor;

Vector<Integer> vector1 = new Vector<Integer>(); // 타입 지정
Vector<Integer> vector2 = new Vector<>(); // 타입 생략 가능 
Vector<Integer> vector3 = new Vector>(10); // 초기 용량(Capacity) 설정
Vector<Integer> vector4 = new Vector (10, 10); // 초기 용량, 증가량 설정
Vector<Integer> vector5 = new Vector (vector1); // 다른 Collection값으로 초기화
Vector<Integer> vector6 = new Vector<<>(Arrays.asList(1, 2, 3, 4, 5)); // Arrays.asList()

추가 및 생성

import java.util.Vector;

public class Main {
    public static void main(String[] args) { 
        Vector<String> colors = new Vector<>(); 
        // add() method 
        colors.add("Black"); 
        colors.add("White"); 
        colors.add(0, "Green"); 
        colors.add("Red");
        
        // set() method 
        	
        colors.set(0, "Blue");
        System.out.println(colors);
    }
}

 

- 인덱스를 지정하지 않으면 끝에 값을 추가한다.

- 인덱스를 지정하면 해당 위치에 추가되고 해당 인덱스부터 데이터들은 뒤로 한 칸씩 밀린다.


삭제

import java.util.Arrays; 
import java.util.Vector;

public class Main {
    public static void main(String[] args) {
        Vector<String> colors = new Vector(Arrays.asList("Black", "White", "Green", "Red")); 
        String removedColor = colors.remove(0);
        System.out.println("Removed color is" + removedColor);
        
        colors.remove("White");
        System.out.println(colors);
        
        colors.clear();
        System.out.println(colors);
    }
}

- 전체 삭제는 clear()


전체 값 확인

import java.util.Arrays; 
import java.util.Iterator; 
import java.util.ListIterator; 
import java.util.Vector;
public class Main {
    public static void main(String[] args) {
        Vector<String> colors = new Vector(Arrays.asList("Black", "White", "Green", "Red")); 
        //for-each loop
        for (String color: colors) {
            System.out.print(color + " ");
        }
        System.out.println();
        
        // for loop
        for (int i = 0; i < colors.size(); ++i) {
            System.out.print(colors.get(i) + " ");
        }
        System.out.println();
        
        // using iterator
        Iterator<String> iterator = colors.iterator(); 
        while (iterator.hasNext()) {
            System.out.print(iterator.next() + " ");
        }
        System.out.println();
        
        // using listIterator
        ListIterator<String> listIterator = colors.listIterator(colors.size()); 
        while (listIterator.hasPrevious()) {
            System.out.print(listIterator.previous() + " ");
        }
        System.out.println();
    }
}

 

- listlterator를 사용하면 역방향 순회가 가능하다.


값 존재 유무 확인

import java.util.Arrays; 
import java.util.Vector;

public class Main {
    public static void main(String[] args) {
        Vector<String> colors = new Vector(Arrays.asList("Black", "White", "Green", "Red"));
        boolean contains = colors.contains("Black");
        System.out.println(contains);
        
        int index = colors.indexOf("Blue");
        System.out.println(index);
        
        index = colors.indexOf("Red");
        System.out.println(index);
    }
}

 

- contains() - 값이 존재하면 true, 존재하지 않으면 false

- indexOf() - 값이 존재할 경우 인덱스 리턴, 존재하지 않으면 -1 리턴

 

'자료구조' 카테고리의 다른 글

[자료구조] TreeSet  (0) 2023.11.07
[자료구조] Hash Set  (0) 2023.11.07
[자료구조] Stack  (0) 2023.11.06
[자료구조] ArrayList  (0) 2023.11.03
[자료구조] 자료구조형  (0) 2023.11.03