벡터 (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(1, 15); 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(1, 15); 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값을 삭제했다.
이렇게 벡터에 관해 알아보았다.
벡터는 실제로 많은 프로그래밍에 쓰이며 활용도가 매우 높다.
꼭 잘 알아두자!
'자료구조' 카테고리의 다른 글
[큐] What's Queue? (In JAVA) (0) | 2019.03.06 |
---|---|
[스택] 스택 (What's Stack?) in JAVA (0) | 2019.02.17 |
[리스트] 연결리스트 (LinkedList) in JAVA (0) | 2019.02.17 |
[리스트] 리스트구조 - 연결리스트의 구현 (0) | 2019.01.26 |
[리스트] 리스트구조 - 배열로 구성된 리스트 (0) | 2019.01.25 |