SSISO Community

시소당

2-5. Enumeration 와 Iterator 인터페이스

2-5.  Enumeration  와  Iterator  인터페이스

Collection  Framework  에는  Enumeration  와  Iterator  라는  인터페이스가  있다.  사전적인  의미로는  반복,  순환이라는  뜻을  지니고  있다.  어떤  객체들의  모임이  있을  때(Collection  계열  구현  클래스들,  Collection  인터페이스에  iterator()  메소드가  있었음을  기억해라)  이  객체들을  어떤  순서에  의해서  하나씩  꺼내  쓰기  위한  인터페이스라고  할  수  있다.  원래  Java  2  이전는  Enumeration  이라는  인터페이스가  많이  사용되었지만  최근에는  Iterator  인터페이스가  더  많이  사용된다.  그  이유는  각  인터페이스를  살펴보며  알아보기로  하겠다.

2-5-1.  Enumeration

아래의  Enumeration  인터페이스의  코드를  보자.

        package  java.util;

        public  interface  Enumeration  {
                  boolean  hasMoreElements();
                Object  nextElement();
        }
 

이  인터페이스는  단지  두개의  메소드만을  제공한다.  이  인터페이스의  사용은  상당히  간단하다.  hasMoreElements()  메소드로  인터페이스  안에  다음  요소가  있는지를  질의한다.  만약  true  가  리턴되었다면(다음  인덱스에  요소가  있다는  의미)  nextElement()  메소드로  다음  요소를  꺼내서  사용하면  되는  것이다.

java.util.StringTokenizer  클래스가  Enumeration  인터페이스를  구현하고  있다.  따라서  StringTokenizer  클래스가  제공하는  메소드들  중에서  Enumeration  에서  정의한  2개의  메소드가  제공되는  것을  볼  수  있을  것이다.

2-5-2.  Iterator

아래의  코드는  Iterator  인터페이스다.

        package  java.util;

        public  interface  Iterator  {
                  boolean  hasNext();
                Object  next();
                void  remove();
        }
 

Enumeration  과의  차이점은  단지  remove()  메소드가  추가된  것  뿐이다.  hasNext()  와  next()  메소드는  이름만  약간  다를  뿐  Enumeration  인터페이스의  hasMoreElements()  와  nextElement()  와  정확히  일치하는  기능을  한다.

그럼  왜  Enumeration  대신  Iterator  를  Java  2에서  추가해서  사용할까?  그것은  Enumeration  인터페이스는  집합  내에서  요소를  제거할  방법이  없기  때문이다.  그것을  보완하기  위해  나온  것이  Iterator  인터페이스다.  

814 view

4.0 stars