본문 바로가기

[TIL] 컬렉션 - java.util.Enumeration & Iterator

인포꿀팁 발행일 : 2020-09-07

java.util.Enumeration<E>

사전적 의미로는 열거, 반복자라는 뜻으로 어떤 객체들의 모임이 있을 때, 객체들을 어떤 순서에 의해서 하나씩 접근하기 위한 인터페이스이다.

과거에는 Enumeration을 자주 사용했지만 현재에는 Iterator를 사용하는 추세이다.

Enemeration<E>인터페이스 사용법은 아래와 같다.

 

Enumeration<String> 객체를 먼저 생성하고

해당 인터페이스의 메소드를 사용하여 호출한다.

hasMoreElements() 메소드는 불러올 요소가 존재하면 true 아니면 false를 리턴해준다.

nextElement() 메소드는 다음 열거할 요소를 돌려주는 메소드이다.

while문을 사용하여 Vector의 요소들을 모두 불러왔다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package ex0814;
 
import java.util.Enumeration;
import java.util.Vector;
 
public class Enumeration_Ex1 {
 
    public static void main(String[] args) {
        Vector<String> v = new Vector<>();
        v.add("머리");
        v.add("몸통");
        v.add("다리");
        
        Enumeration<String> e= v.elements();
        while(e.hasMoreElements()) {
            String s= e.nextElement();
            System.out.print(s+"  ");
        }
        System.out.println();
    }
 
}
cs

 

java.util.Iterator<E>

Enumeration 와 같은 반복자이며 차이점은 remove() 메소드의 유무이다. hasNext와 next 메소드는 동일하다.

remove() 메소드는 반복자에 의해 마지막에 돌려진 요소를 삭제해주는 메소드를 말한다.

 

java.util.ListIterator 인터페이스

Iterator 인터페이스를 상속받은 인터페이스로  Iterator 과 차이점은 양방향 반복이 가능하다는 점이다.

목록의 반복자에서 현재 위치를 가져올 수 있으며, 수정 가능한 리스트는 삽입,삭제,수정이 가능한 인터페이스이다.

 

void add(E e)  요소를 리스트에 삽입한다.
boolean hasNext() 순방향 검색시 요소 존재하면 true 리턴
bololean hasPrevious() 역방향 검색시 요소 존재시 true리턴
E next() 리스트 내 다음 요소 리턴
int nextIndex() 다음의 next() 메소드 호출이 리턴할 객체의 인덱스를 리턴하며 예외 발생시 -1 리턴
E prievious() 리스트 내의 직전의 요소를 리턴
int previousIndex() 다음의 previous() 메소드 호출이 리턴 할 객체의 인덱스를 리턴 예외시 -1 리턴
void remove() next/ previous 메소드가 리턴한 요소를 삭제
void set(E e) next/previous 메소드가 최근에 리턴한 객체를 지정한 객체로 변경

댓글