본문 바로가기
JAVA

[JAVA] Iterator 와 Enumeration

by madinthe90 2022. 1. 11.
반응형

컬렉션(collection) 인터페이스를 사용하는 클래스의 데이터를 순환해서 사용하는 경우

for문으로 데이터를 가져오는 방법도 있지만

순환 인터페이스인 iteratorEnumeration을 사용하는 방법도 있다.

 

IteratorEnumeration는 비슷하지만 스레드(thread)의 지원 여부가 다르다.

 

- Iterator

스레드에 안전하지 않은 구조

ArrayList, HashSet 등은 Iterator을 사용

ArrayList<String> nameList = new ArrayList<String>();
String name;
nameList.add("A");
nameList.add("B");
nameList.add("C");
nameList.add("D");
nameList.add("E");
nameList.add("F");
        
Iterator<String> it = nameList.iterator();
 
while(it.hasNext()) { // hasNext() : 내용이 있는지 확인하는 메서드
    name = it.next(); // next() : 값을 가져오는 메서드
    if ("F".equals(name)) {
            it.remove(); // remove() : 해당 컬렉션 값을 삭제하는 메서드
    }
}
  
for(String l : nameList) {
    System.out.println(l);
}

 

- Enumeration

스레드에 안전한 구조

Vector, Hashtable 등은 Enumeration을 사용

Vector<String> vt = new Vector<String>();
 
vt.addElement("A");
vt.addElement("B");
vt.addElement("C");
vt.addElement("D");
vt.addElement("E");
 
Enumeration<String> e = vt.elements();
 
while(e.hasMoreElements()) { // hasMoreElements() : 내용이 있는지 확인하는 메서드
    System.out.println(e.nextElement()); // nextElement() : 값을 가져오는 메서드
}
반응형

댓글