본문 바로가기

자료구조

[벡터] 동적인 배열 벡터 Vector (in JAVA)

벡터 (Vector)

- in JAVA -


우리가 처음 배열을 배울 때 int arr[5];, int[] arr = new int[5]; 다음과 같이 생성할 때

배열의 길이가 고정된 배열을 주로 이야기했다.

따라서 배열을 한번 만들고 나면 배열의 크기를 증가시키거나 감소시킬 수 없다.

그래서 자바나 C++같은 언어에서는 동적으로 길이가 변하는 배열 벡터(Vector)라는 것을 제공해준다.


벡터는 데이터를 추가할 때마다 크기가 동적으로 변하는 배열인데

예를 들어, 처음 사이즈값을 5라고 둔 벡터를 생성하고 5개의 데이터를 넣고, 또다른 1개의 데이터를 넣을 때

벡터의 크기가 1 증가하여 새로운 데이터를 추가하는 것이다.


백문이 불여일견, 직접 벡터를 사용하는 코드 예시를 보며 설명하겠다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import java.util.Vector;
 
public class VectorTest {
 
    public static void main(String[] args) {
        Vector<Integer> vector = new Vector<Integer>(5);
    
        vector.add(10);
        vector.addElement(20);
        vector.add(115);
        System.out.println(vector);
        System.out.println(vector.size());
        System.out.println(vector.indexOf(15));
        
    }
}
cs

벡터의 생성은 Vector<데이터타입> 변수명 = new Vector<데이터타입>(초기사이즈); 로 생성한다.

데이터 추가는 add메소드와 addElement메소드를 이용하는데 위 예제를 보면

먼저 add(10);  addElement(20); 으로 10과 20을 벡터에 추가하였다.

그리고 add(1, 15);으로 10과 20사이에 15를 추가해준 것이다.

벡터의 인덱스번호는 기존 배열과 똑같이 0부터 시작한다.

즉 add(1, 15);는 인덱스번호 1에 15를 추가한다는 의미이며, 이미 해당 인덱스에 있던 데이터 20은

뒷번호 2로 밀리는 모습이다.


vector.size() 메소드는 현재 벡터의 크기, 현재 벡터에 들어있는 데이터들의 개수를 의미하며

vector.indexOf(데이터값); 메소드는 (데이터값)이 들어있는 인덱스번호를 반환하는 메소드이다.

(위 예제에선 15의 인덱스번호) 만약 데이터값이 벡터에 들어있지 않으면 -1값을 반환한다.


앞에서 벡터는 동적으로 크기가 변하는 배열모양이라고 설명했다.

한번 처음에 주어진 벡터의 크기를 오버해서 데이터를 넣는 실습을 해보자.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import java.util.Vector;
 
public class VectorTest {
 
    public static void main(String[] args) {
        Vector<Integer> vector = new Vector<Integer>(5);
        
        vector.add(10);
        vector.addElement(20);
        vector.add(115);
        vector.addElement(30);
        vector.addElement(40);
        vector.addElement(50);
        vector.addElement(60);
        System.out.println(vector);
        System.out.println(vector.size());
        
        vector.remove(1);
        vector.removeElement(10);
        System.out.println(vector);
 
    }
}
cs


처음 벡터를 생성했을 때 크기를 5로 지정했지만

5를 넘은 개수의 데이터를 추가하니까 크기가 5를 넘어가는 모습을 볼 수 있다.

실제로 vector.size(); 로 확인해보면 현재 벡터에 있는 데이터크기가 7인 것을 확인할 수 있다.


그리고 데이터의 삭제는 remove(인덱스번호);  removeElement(데이터값); 으로 삭제 가능한데

위 예제에서 remove(1);로 인덱스 1번에 있던 15값을 삭제했고, removeElement(10);으로 10값을 삭제했다.



이렇게 벡터에 관해 알아보았다.

벡터는 실제로 많은 프로그래밍에 쓰이며 활용도가 매우 높다.

꼭 잘 알아두자!