1. Vector클래스란?
- Vector 클래스는 ArrayList클래스와 같이 컬렉션 프레임웍에서 가장 많이 사용되는 컬렉션 클래스 일 것입니다.
이 둘은List 인터페이스를 구현하기 때문에 List인터페이스의 특징인
1. 저장순서를 유지하며
2. 중복을 허용합니다.
라는 특징을 가지고 있습니다.
- Vector클래스의 기능을 개선 한 것이 ArrayList클래스입니다. Vector 클래스는 기존에 작성된 소스와의 호환성을 위해서 계속 남겨 두고 있을
뿐이기 때문에 가능하면 Vector클래스보다 ArrayList클래스를 사용하는 것이 바람직하다고 할 수 있습니다.
다음은 Vector클래스와 ArrayList클래스의 공통점과 차이점을 나타내는 표입니다.
<사진 1.1> Vector클래스와 ArrayList클래스의 비교
2. 벡터 생성하는 방법
- 벡터를 생성할 때, Vector<E>의 E에 요소로 사용할 타입을 지정하면 됩니다. 예를 들어, 정수 값만 삽입 가능한 벡터를 만들고자 한다면
다음과 같이 E 요소에 Integer를 지정하여 벡터를 생성하면 됩니다.
Vector<Integer> v = new Vector<Integer>();
만약 문자열만 삽입 가능한 벡터를 만들고 싶으면 다음과 같이 벡터를 생성하면 됩니다.
Vector<String> v = new Vector<String>();.
만일 Vector<E>에서 E 요소에 구체적인 타입을 지정하지 않는다면 컴파일러가 경고 메시지를 출력합니다.
3. Vector 클래스의 주요 메서드
1) 벡터에 요소 삽입
- add() 메서드를 사용하여 벡터의 끝이나 중간에 요소를 삽입할 수 있습니다. 다음은 정수 1, 2, 3을 순서대로 벡터에 삽입하는 코드입니다.
1
2
3
4
5
6
7
8
9
10
11
12 |
package com.edu.test;
import java.util.*;
public class test {
public static void main(String[] args) {
Vector<Integer> v = new Vector<Integer>();
v.add(1);
v.add(2);
v.add(3);
}
} |
cs |
<사진 1.2> add() 메서드 사용
- 벡터 v에는 Integer 외의 다른 타입의 객체를 삽입할 수 없습니다. 현재 제네릭이 Integer로 선언되어 있는데
add() 메서드의 인자 값으로 정수형이 아닌 다른 타입을 삽입할 경우에는 오류가 발생합니다.
<사진 1.3>
- 초기에 선언한 Integer 타입이 아닌 문자열 3을 삽입하였으니 빨간 줄이 생기면서 컴파일 오류가 발생하였습니다.
- 참고로 벡터에는 null값을 삽입할 수 있기 때문에, 벡터를 검색할 때 null값이 존재할 수 있음을 염두해 두어야 합니다.
- 다음은 add()메서드를 사용하여 벡터의 중간에 객체를 삽입해보겠습니다. 다음은 현재 벡터 v에 [1, 2, 3]이 저장 되어 있지만
인덱스 1번 위치에 100 요소를 삽입해보는 코드입니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 |
package com.edu.test;
import java.util.*;
public class test {
public static void main(String[] args) {
Vector<Integer> v = new Vector<Integer>();
v.add(1);
v.add(2);
v.add(3);
v.add(1,100);
}
}
|
cs |
<사진 1.4>
- v.add(1,100); 는 인덱스 1의 위치에 정수 100을 삽입한다는 코드입니다. 다음은 결과 화면입니다.
<사진 1.4 결과 화면>
- 결과를 보면 기존의 인덱스 1 위치에 있던 2와 그 뒤에 있던 3이 모두 한 자리씩 뒤로 이동했습니다.
만약 벡터에 1개의 요소(인덱스 0의 위치)만 들어있는 상태인데 2의 위치에 요소를 삽입할 경우엔 예외가 발생합니다. 왜냐하면
인덱스 1이 빈 공간이 되기 때문입니다.
2) 벡터 내의 요소 알아내기
- 벡터 내에 존재하는 요소를 알아내기 위해서는 get() 메서드와 elementAt() 메서드를 사용합니다. 다음은 get()메서드를 사용한 코드입니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 |
package com.edu.test;
import java.util.*;
public class test {
public static void main(String[] args) {
Vector<Integer> v = new Vector<Integer>();
v.add(1);
v.add(2);
v.add(3);
v.add(4);
v.add(5);
for(int i=0; i<v.size(); i++) {
System.out.println(v.get(i));
}
}
}
|
cs |
<사진 1.5>
- 벡터 v에 정수 1, 2, 3, 4, 5를 삽입했습니다. 벡터 v에 있는 모든 요소들을 순서대로 출력하기 위해 for문을 사용했습니다.
- v.get(0)이 실행될 경우 벡터 v가 가리키고 있는 0번째 인덱스의 값을 추출합니다.
- 다음은 현재 벡터 v의 상태를 그림으로 표현했습니다.
<사진 1.6>
- 벡터 v는 0x100(임의의 주소로 아무렇게나 정한 것입니다)이라는 주소 값을 갖고 있는 위치를 가리키고 있습니다.
현재 0x100위치에는
0번 인덱스에 1,
1번 인덱스에 2,
2번 인덱스에 3,
3번 인덱스에 4,
4번 인덱스에 5라는 값을 저장하고 있습니다. 그래서 v.get(0)메서드를 호출할 경우 벡터 v가 가리키고 있는 0번째 인덱스 값인 1을 반환합니다.
다음은 <사진 1.5> 코드의 결과 화면입니다.
<사진 1.5 결과 화면>
- 벡터 v가 가리키고 있는 모든 요소들을 출력했습니다.
3) 벡터에서 요소 삭제
- 벡터 내의 임의의 인덱스에 있는 요소를 삭제할 수 있습니다. remove() 메서드를 사용하면 됩니다.
v.remove(1); // 벡터 v가 가리키고 있는 1번째 인덱스의 값을 삭제하는 코드입니다.
- 다음은 remove() 메서드를 사용한 코드입니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 |
package com.edu.test;
import java.util.*;
public class test {
public static void main(String[] args) {
Vector<Integer> v = new Vector<Integer>();
v.add(1);
v.add(2);
v.add(3);
v.add(4);
v.add(5);
v.remove(1);
for(int i=0; i<v.size(); i++) {
System.out.println(v.get(i));
}
}
}
|
cs |
<사진 1.7>
- 현재 벡터 v는 정수 1, 2, 3, 4, 5를 배열로 저장하고 있는 상태에서 14번째 줄 코드에서 remove()메서드를 사용하여 인덱스 1 위치에 있는 요소를
삭제하고 벡터 v가 저장하고 있는 모든 요소들을 출력하고자 합니다. 다음은 결과 화면입니다.
<사진 1.7 결과 화면>
- 인덱스 1 위치에 있던 정수 2를 삭제 하여 뒤에 있던 요소들이 한 자리씩 앞으로 이동하였습니다.
- 벡터의 모든 요소를 삭제하고자 한다면 v.removeAllElements(); 를 호출하면 됩니다.
'언어 > JAVA' 카테고리의 다른 글
[Java] 클래스 / 인스턴스 / 지역변수 쉽게 이해하기 (0) | 2019.11.26 |
---|---|
[Java] 스캐너(Scanner)클래스 사용 방법 (0) | 2019.11.26 |
[JAVA] HashMap 컬렉션 클래스 사용 방법 (0) | 2018.03.28 |
[JAVA] Enumeration, Iterator, ListIterator 인터페이스 사용 방법 (0) | 2018.03.22 |
[JAVA] ArrayList클래스 사용 방법 (0) | 2018.03.01 |