개발/JAVA

Java 컬렉션: 벡터(Vector) 배우기

예니03 2025. 1. 10. 11:38
반응형

Java에서 Vector(벡터)는 데이터를 저장하고 관리할 수 있는 컬렉션 클래스입니다. 마치 상자처럼 다양한 데이터를 저장할 수 있으며, 데이터를 넣고 꺼내는 동작을 간단히 수행할 수 있습니다. 오늘은 벡터가 무엇인지, 어떻게 사용하는지 초보자도 쉽게 이해할 수 있도록 알려드릴게요! 😊

1. 벡터(Vector)란?

Vector는 Java에서 데이터를 저장할 수 있는 컬렉션 클래스입니다.

벡터의 특징

  • 동적 크기 배열: 데이터를 저장하다가 공간이 부족하면 자동으로 크기를 늘려줍니다.
  • 모든 데이터 타입 저장 가능: 숫자, 문자열 등 다양한 데이터를 저장할 수 있습니다.
  • 순서 유지: 데이터를 넣은 순서대로 저장됩니다.
  • 중복 허용: 동일한 데이터를 여러 번 저장할 수 있습니다.

 

2. 벡터 기본 사용법

코드 예제: 벡터 생성과 데이터 추가

import java.util.Vector;

public class VectorEx {
    public static void main(String[] args) {
        // 벡터 생성
        Vector<Integer> v = new Vector<>();  // 정수를 저장하는 벡터
        System.out.println("초기 상태 -> Size: " + v.size() + ", Capacity: " + v.capacity());

        // 1. 데이터 추가
        for (int i = 0; i < 10; i++) {
            v.addElement(i);  // 데이터를 추가
        }
        System.out.println("10개 데이터 추가 후 -> Size: " + v.size() + ", Capacity: " + v.capacity());

        // 2. 크기 초과
        v.addElement(10);  // 11번째 데이터 추가 → 용량 증가
        System.out.println("11번째 데이터 추가 후 -> Size: " + v.size() + ", Capacity: " + v.capacity());
    }
}

출력 결과

초기 상태 -> Size: 0, Capacity: 10  
10 데이터 추가  -> Size: 10, Capacity: 10  
11번째 데이터 추가  -> Size: 11, Capacity: 20  

설명

  1. Size: 벡터에 저장된 데이터의 개수입니다.
  2. Capacity: 벡터가 데이터를 저장할 수 있는 공간입니다. 데이터를 추가하다가 용량이 부족하면 자동으로 용량이 증가합니다.

 

3. 벡터 데이터 조회와 삭제

코드 예제: 데이터 확인과 삭제

public class VectorEx {
    public static void main(String[] args) {
        Vector<Integer> v = new Vector<>();

        // 데이터 추가
        for (int i = 0; i < 10; i++) {
            v.addElement(i);
        }

        // 1. 특정 데이터 확인
        System.out.println("5번째 데이터: " + v.elementAt(5));  // 출력: 5

        // 2. 데이터 검색
        System.out.println("5의 위치: " + v.indexOf(5));  // 출력: 5
        System.out.println("20의 위치: " + v.indexOf(20));  // 출력: -1 (데이터 없음)

        // 3. 데이터 포함 여부 확인
        System.out.println("7 포함? " + v.contains(7));  // true
        System.out.println("20 포함? " + v.contains(20));  // false

        // 4. 데이터 삭제
        v.removeElement(7);  // 7 삭제
        System.out.println("7 삭제 후 벡터: " + v);
    }
}

출력 결과

5번째 데이터: 5  
5의 위치: 5  
20의 위치: -1  
7 포함? true  
20 포함? false  
7 삭제 후 벡터: [0, 1, 2, 3, 4, 5, 6, 8, 9]

설명

  1. elementAt: 특정 위치의 데이터를 확인합니다.
  2. indexOf: 데이터가 저장된 위치를 찾습니다.
  3. contains: 데이터가 벡터에 있는지 확인합니다.
  4. removeElement: 특정 데이터를 삭제합니다.

 

4. 벡터 순회 (모든 데이터 출력)

코드 예제: 반복문과 Enumeration 사용

import java.util.Enumeration;

public class VectorEx2 {
    public static void main(String[] args) {
        Vector<Integer> v = new Vector<>();

        // 데이터 추가
        for (int i = 0; i < 10; i++) {
            v.addElement(i);
        }

        // 1. 일반 반복문 사용
        System.out.println("일반 반복문:");
        for (int i = 0; i < v.size(); i++) {
            System.out.print(v.elementAt(i) + " ");
        }
        System.out.println();

        // 2. Enumeration 사용
        System.out.println("Enumeration 사용:");
        Enumeration<Integer> e = v.elements();
        while (e.hasMoreElements()) {
            System.out.print(e.nextElement() + " ");
        }
        System.out.println();
    }
}

출력 결과

일반 반복문:  
0 1 2 3 4 5 6 7 8 9  
Enumeration 사용:  
0 1 2 3 4 5 6 7 8 9  

설명

  1. 일반 반복문: for 문을 사용해 데이터를 하나씩 출력합니다.
  2. Enumeration: elements() 메서드로 데이터를 순회합니다.

 

5. 벡터와 제네릭(Generic)

제네릭을 사용하면 벡터에 저장할 데이터 타입을 제한할 수 있습니다.

Vector<? super Number> v2 = new Vector<>();
v2.addElement(10);       // Integer
v2.addElement(3.14f);    // Float

제네릭의 장점

  1. 타입 안정성 보장: 지정된 타입 외의 데이터를 추가할 수 없습니다.
  2. 불필요한 형 변환 제거: 데이터를 꺼낼 때 캐스팅하지 않아도 됩니다.

 

6. 정리

  • 벡터(Vector)는 데이터를 저장하고 관리할 수 있는 동적 배열입니다.
  • 데이터를 추가하다가 공간이 부족하면 자동으로 크기를 늘려줍니다.
  • 데이터 추가, 조회, 삭제, 검색 등 다양한 작업을 수행할 수 있습니다.
  • Enumeration제네릭을 활용하면 데이터를 더 효율적으로 관리할 수 있습니다.
반응형