lterator

배지원·2022년 10월 5일
0

JAVA

목록 보기
26/32

lterator(과거 Enumeration)

  • 컬렉션에 저장된 데이터를 접근하는데 사용되는 인터페이스
  • Enumeration은 lterator의 구버젼
  • Listlterator는 lterator의 접근성을 향상시킨 것(단방향 -> 양방향) [거의 안씀]

주요 메서드

boolean hasNext()읽어 올 요소가 남아있는지 확인한다. 있으면 true, 없으면 false를 반환한다.
Object next()다음 요소를 읽어 온다. next( )를 호출하기 전에 hasNext()를 호출해서 읽어 올 요소가 있는지 확인하는 것이 안전

(1) 기본 예제

public static void main(String[] args) {
        ArrayList<String> list = new ArrayList();
        list.add("1");
        list.add("2");
        list.add("3");
        list.add("4");
        list.add("5");

        Iterator it = list.iterator();	// iterator 선언

        while(it.hasNext()){			// it안에 값 유무 체크
            Object obj = it.next();		// it값을 처음부터 순서대로 읽기
            System.out.println(obj);
        }
// 여기는 값이 없음 이유는 이미 위에서 처음부터 끝까지 읽었기 때문에 더이상 값이 없어서 출력할값이 없음
        while(it.hasNext()){			 
            Object obj = it.next();
            System.out.println(obj);
        }
// iterator과 같은 의미로 사용할 수 있지만 만약 Arraylist가 아닌 HashSet list = new HashSet으로 변경하여 사용한다면
// 같은 Collection클래스의 하위로 iterator는 사용할 수 있지만 for문 안에 get()은 사용할 수가 없음. 
// 즉, iterator는 코드변경 불필요 for문은 코드변경 필요
        for(String i =0; i<list.size(); i++){
        		Object obj = list.get(i);
        		System.out.println(obj);
        }
    }

(2) HashSet를 이용한 예제

import java.util.HashSet;
import java.util.Iterator;

public class HashSetTest2 {
    public static void main(String[] args) {
        HashSet setA = new HashSet();
        HashSet setB = new HashSet();
        HashSet setHab = new HashSet();
        HashSet setKyo = new HashSet();
        HashSet setCha = new HashSet();

        setA.add("1"); setA.add("2"); setA.add("3"); setA.add("4"); setA.add("5");
        System.out.println("A = "+setA);

        setB.add("4"); setB.add("5"); setB.add("6"); setB.add("7"); setB.add("8");
        System.out.println("B = "+setB);

        Iterator it = setB.iterator();      // 모든 숫자 출력하기 위한 클래스
        while(it.hasNext()){                //  마지막 자리까지 반복
            Object tmp = it.next();         // tmp에 한줄씩 값 대입
            if(setA.contains(tmp))          // setB와 setA의 값을 비교하여 같은 값만 대입
                setKyo.add(tmp);
        }

        it = setA.iterator();
        while(it.hasNext()){
            Object tmp = it.next();
            if(!setB.contains(tmp))         // setA를 setB의 값과 비교하여 다른 값만 대입
                setCha.add(tmp);
        }

        it = setA.iterator();
        while(it.hasNext())
                setHab.add(it.next());      // setHab에 setA의 값 모두 대입

        it = setB.iterator();
        while(it.hasNext())
            setHab.add(it.next());          // setHab에 setB의 값 모두 대입

        System.out.println("A ∩ B =" +setKyo);
        System.out.println("A ∪ B =" +setHab);
        System.out.println("A - B =" +setCha);
    }
}
profile
Web Developer

0개의 댓글