개선된 for 루프를 이용할 수 있는 클래스는 배열과 Iterable 을 구현한 클래스이다. 자바언어의 Collection 인터페이스는 Iterable을 상속해서 작성되었으므로 Collection 의 하위 클래스들(List, Set 계열)은 모두 개선된 for 루프를 사용할 수가 있다.
import java.util.*;
public class IteratorDemo {
public static void main(String[] args) {
Vector v = new Vector();
v.add(new Employee("이정우", 1004));
v.add(new Employee("주혜연", 1005));
/* Vector 클래스는 Iterable 을 구현한 클래스이므로 Iterator를 이용할 수 있다.*/
Iterator it = v.iterator();
while(it.hasNext()) {
Employee e = (Employee)it.next();
System.out.println("사원번호="+e.getEmpno()+", 사원이름="+e.getEname());
}
/*개선된 for 루프를 이용할 수 있는 것은 배열과 Iterable을 구현한 클래스이다.*/
for(Object obj : v) {
Employee e = (Employee)obj;
System.out.println("사원번호="+e.getEmpno()+", 사원이름="+e.getEname());
}
/*일반 for 루프를 이용하는 경우*/
for(int i=0;i<v.size();i++) {
Employee e = (Employee) v.get(i);
System.out.println("사원번호="+e.getEmpno()+", 사원이름="+e.getEname());
}
/* JDK 1.5 부터 사용할 수 있는 Generics 를 이용할 경우, 가장 간단하게 처리가능*/
Vector<Employee> ve = new Vector<Employee>();
ve.add(new Employee("이정우", 1004));
ve.add(new Employee("주혜연", 1005));
for(Employee e : ve) {
System.out.println("사원번호="+e.getEmpno()+", 사원이름="+e.getEname());
}
}
}
위의 클래스에서 사용된 Employee.java
private String ename;
private int empno;
public Employee(String ename, int empno) {
this.ename = ename;
this.empno = empno;
}
public String getEname() {
return ename;
}
public void setEname(String ename) {
this.ename = ename;
}
public int getEmpno() {
return empno;
}
public void setEmpno(int empno) {
this.empno = empno;
}
}