본문 바로가기

Java SE/Iterable

Iterable

개선된 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
public class Employee  {
 
 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;
 }
}