자바(Java) - java.util.Vecotr 클래스란?

안녕하세요

이번 시간에는 Vector 클래스의 개념과 간단한 예제를 올려볼까 합니다.

자바에서 벡터(Vector)란 Object 유형의 Collection으로서, 어떤 유형의 객체도 저장할 수 있습니다. (하지만 기본 자료형은 저장이 불가합니다)

벡터는 몇 가지 특징이 있습니다.

- 벡터는 데이터가 가득 차면 자동으로 저장 영역을 확대합니다.

- java.util.List 인터페이스를 구현하는 클래스로 순서대로 정렬되고, 중복도 허용하는 특징을 갖습니다.


일단 벡터를 사용하기 이전에 몇 가지 알아두어야 할게 있습니다.

1) Vector 클래스 생성자

1 - Vector() // 10개 요소를 저장할 공간
2 - Vector(int initialCapacity) // 초기치 용량을 매개변수로 정함
3 - Vector(int initialCapacity, int incre) // 초기 용량과 증가치를 인자로 넣어줌

2) Vector에 요소 저장

Vector v = new Vector(5);
v.add("Hello"); v.add(new Integer(10)); // 벡터의 0번째, 1번째에 순차적으로 저장

3) Vector에서 꺼내오기

Object obj = v.get(0);
String str=(String)obj;
Integer i=(Integer)v.get(1);

4) elements()/iterator()로 벡터 요소 꺼내오기

- Enumeration과 Iterator인터페이스는 객체들을 집합체로 관리하는데, 이들 인터페이스에는 각각의 객체들을 한순간에 하나씩 처리할 수 있는 메소드를 제공합니다.

- Vector의 메소드 : Enumeration elements()
/***********************************************
Enumeration 인터페이스에 있는 주요 메소드
1>boolean hasMoreElements()
2>E nextElement()
***********************************************/

- Vector의 메소드 : Iterator iterator()
/***********************************************
Enumeration 인터페이스에 있는 주요 메소드
1>boolean hasNext()
2>E next()
3>void remove()
***********************************************/

자 그럼 벡터를 활용한 간단한 예제와 결과 화면을 보면서 이 시간을 마무리 짓겠습니답

package testtest;

import java.util.*;
import static java.lang.System.out;

public class VectorTest {

public static void main(String[] args) {

Vector v=new Vector(5,3);
//초기 용량 : 5, 증가치 : 3

out.println("v의 용량: "+v.capacity()); // 5
out.println("v의 크기: "+v.size()); // 0

for(int i=1;i<=10;i++){
v.add(new Integer(i));
}

out.println("벡터v에 요소 저장 후-------------");
out.println("v의 용량: "+v.capacity()); //11 i가 5일때 +3, 10일때 +3
out.println("v의 크기: "+v.size()); //10

v.add(new Double(3.14)); //double 유형의 객체로 new를 안했을시 Autoboxing되어 저장됨(하지만 new를 하는게 좋음)
v.add("Hello");

//벡터는 object유형의 객체를 저장할 수 있다.
out.println("v의 용량: "+v.capacity()); //14
out.println("v의 크기: "+v.size()); //12

//벡터에 요소 저장하기 => add(Object o), addElement(Object o)

//벡터에 요소 꺼내오기 => Object get(int index), Object elementAt(int index)

Object obj=v.get(3);
Integer i=(Integer)obj;
out.println("i="+i);

Double dbl=(Double)v.get(10);
out.println("dbl="+dbl);
out.println("----5.0이후---------------");

//Generic 사용
//v2는 String유형만 저장하는 벡터가 된다.
Vector<String> v2=new Vector<String>();
for(i=1;i<6;i++){
v2.add("Java "+i);
}

String str=v2.get(0); // Generic을 사용하면 형변환이 필요없다~!
System.out.println("str="+str);

//for루프 이용해서 한꺼번에 v2에 저장된 요소를 출력하세요
for(int j=0;j<v2.size();j++){
String s=v2.get(i);
out.print(s);
}

//벡터를 생성하여 Float객체 3개를 저장하세요
//Generic 사용해서 for루프 이용해 꺼내와 출력하세요
Vector<Float> v4=new Vector<Float>(3,2);
v4.add(10.456f);
v4.add(new Float(12.56));
v4.add(100f);
v4.add(1, new Float(312)); // 인덱스가 1인 곳에 312.0을 저장
     //(index, Object)

for(int j=0;j<v4.size();j++){
Float fval=v4.get(j);
out.println(fval);
}

//Generic을 사용했다면 확장 for루프 이용할 수 있다.
out.println("#####");
for(Float a:v4){
out.print(a);
}

//[문제1]확장 for루프를 이용해 arr에 저장된 값 출력하세요
//배열은 애초에 같은 데이터가 있기 때문에 Generic 안 사용해도 됨

int arr[]={1,2,3,4};
for(int x:arr){
out.println(x);
}

//[문제2]v2를 확장 for루프 이용해 출력하세요
for(String s:v2){
out.println(s);
}

}
}

== 결과 화면 ==



댓글 없음:

댓글 쓰기