본문 바로가기

카테고리 없음

Java - Iterator, ListIterator, Enumeration

반응형

컬렉션에 저장된 데이터를 접근하는데 사용되는 인터페이스 

Iterator, ListIterator
 - ListIterator은 Iterator의 접근성을 향상시킨 것(단방향 > 양방향)

- boolean hasNext() : 읽어 올 요소가 남아있는지 확인한다. 있으면 true, 없으면 false를 반환한다.
- Object next() : 다음 요소를 읽어온다. hashNext()를 확인하고 사용 하는 것이 좋다. 

package collection;

import java.util.*;

public class CollectionMain2 {
    public static void main(String [] args){
    // Iterator은 Collection의 메소드이기 때문에 
    // 타입을 Collection으로 참조변수를 생성하여 유연하게 하는 것이 좋다. 

// 	ArrayList TreeSet 모두 가능
//        Collection list = new ArrayList<String>();
        Collection list = new TreeSet<String>();
        
        list.add("a");
        list.add("b");
        list.add("d");
        list.add("f");
        list.add("z");
        list.add("h");

        Iterator it = list.iterator();
        while(it.hasNext()){
            System.out.println(it.next());
        }

    }

}

Enumeration
 Iterator의 구버전
- boolean hasMoreElements() : 읽어 올 요소가 남아있는지 확인한다. 있으면 true, 없으면 false를 반환한다.
- Object nextElement() : 다음 요소를 읽어온다. hashNext()를 확인하고 사용 하는 것이 좋다. 

Map과 Iterator
 - Map에는 iterator()가 없다. Map은 Collection의 자식이 아니기 때문
   keySet(), entrySet(), values()를 호출해서 Collection 변수를 얻어서 Iterator 사용 

package collection;

import java.util.*;

public class MapIteratorMain {
    public static void main(String [] args){
        Map map = new HashMap<String, Integer>();
        map.put("A", 10);
        map.put("B", 30);
        map.put("C", 40);
        map.put("D", 20);
        map.put("E", 90);

        System.out.println("key value 값 ");
        Iterator it = map.entrySet().iterator();
        while(it.hasNext()){
            System.out.println(it.next());
        }

        System.out.println("key  값 ");
        Iterator itKey = map.keySet().iterator();
        while(itKey.hasNext()){
            System.out.println(itKey.next());
        }
        System.out.println("value  값 ");
        Iterator itValue = map.values().iterator();
        while(itValue.hasNext()){
            System.out.println(itValue.next());
        }

    }

}

반응형