Java

확장 For문의 활용(집합체에 적용시켜 사용하기)

bang2001 2013. 7. 25. 15:35

확장 For문의 활용(집합체에 적용시켜 사용하기)


우리가 일반적으로 사용해왔던 For문은 단순한 기본자료형의 배열이나 혹은 객체자료형의 배열에서
확장 For문을 사용해 왔었다. 하지만 SCJP문제를 풀면서 이 확장 For문이 집합체에도 적용된다는것을 알았다.

다음은 집합체로써 가장 일반적인 Vector이다.이 Vector에 확장 For문을 적용시켜 보겠다.

import java.util.*;

class ExpasionFor 
{
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 : v)
{
System.out.println(i);
}

System.out.println("========= 구 분 선 =========");

Vector<String> v2 = new Vector<String>();
v2.add("1");
v2.add("2");
v2.add("3");
v2.add("4");
v2.add("5");

for (String i : v2)
{
System.out.println(i);
}
}
}

위와 같은 코드를 컴파일하여 실행 시켰을 때 다음 실행화면을 알아보도록 하자.


이와 같이 제네릭을 사용하게 되면 Vector에 저장되는 값에 대해서 객체자료형에 제한이 걸리면서
형변환을 하지 않아도 되도록 구현이 된다.

형변환이 내부적으로 이루어지지 않고 바로 해당 값을 원래의 객체자료형에 맞게 꺼낼 수 있기 때문이다.
이러한 이유로 확장For문이 집합체에도 사용가능한 것이다.

※ 단, 위에서 언급했듯이 집합체라고 해서 다되는것은 아니다. 제네릭이 구현되어있어야만 가능하다.
   (강제적 형변환이 이루어 지지 않는다는 가정하에서 가능한 것이다.)