19. Iterator (반복자) [ JAVA ]

duck-ach·2022년 8월 9일
0

JAVA

목록 보기
19/27
post-custom-banner

Iterator

Iterator는 자바의 컬렉션 프레임워크에서 컬렉션에 저장되어 있는 요소들을 읽어오는 방법을 표준화 한것이다.

간략히 설명하자면

List : 순서를 유지하는 데이터의 집합. 데이터의 중복 허용O
Set : 순서를 유지하지 않는 데이터의 집합. 데이터의 중복 허용X
Map : 키(Key)와 값(Value)으로 이루어진 데이터의 집합. 순서는 유지되지 않고, 키는 중복을 허용X 값은 중복 허용O

  • Iterator는 이런 집합체로부터 정보를 얻어낸다고 볼 수 있다.
  • 집합체를 다룰 때는 개별적인 클래스에 대해 데이터를 읽는 방법을 알아야 하기 때문에 각 컬렉션에 접근이 힘들어진다.
  • 하지만 Iterator는 어떤 컬렉션이라도 동일한 방식으로 접근이 가능하여 그 안에 있는 항목들에 접근할 수 있는 방법을 제공한다. (다형성)

Iterator의 주요 메소드

1) hasNext() : 다음 요소에 읽어 올 요소가 있는지 확인하는 메소드이다. (유무에 따라 true와 false를 반환한다.)
2) next() : 다음 요소를 가져온다.

사용방법
1) Iterator 개체는 컬렉션 개체의 iterator() 메소드를 호출하여 얻어올 수 있다.
2) hasNext() 메서드로 이동이 가능한지 확인한 후에 next() 메서드로 해당 위치의 보관한 개체를 참조하여 원하는 작업을 수행한다.

Set을 이용하여 Iterator를 적용해보겠다.

// 선언
Set<String> set = new HashSet<String>();
	// 요소추가
	set.add("제육");
	set.add("닭갈비");
	set.add("돈까스");
	set.add("김치찌개");
	set.add("김치찌개"); // Set이라서 중복값은 허용하지 않는다.
    
// Iterator
Iterator<String> itr = set.iterator();
	while(itr.hasNext()) {
		String element = itr.next();
		System.out.println(element);
		}
        
// 돈까스
// 제육
// 닭갈비
// 김치찌개

    

Map과 Iterator

Map은 key값과 Value값이 따로 있기 때문에 keySet() 메소드를 이용하여 Iterator를 할 수 있다.

keySet() : key값만 set에 저장한다.

간단한 예제로 살펴보겠다.

// HashMap 선언
Map<String, Object> map = new HashMap<String, Object>();
	
    // Map에 요소추가
	map.put("page", 1);
	map.put("column", "제목");
	map.put("query", "날씨");
    
// keySet() 키 값만 Set에 저장
    Set<String> keys = map.keySet();
    System.out.println(keys); // [query, column, page]

// Iterator를 이용한 순회출력
Iterator<String> itr = keys.iterator();
	while(itr.hasNext()) { // key를 빼는 것.
		String key = itr.next();
		Object value = map.get(key);
		System.out.println(key + ":" + value);
	}
    
// query:날씨
// column:제목
// page:1

  
profile
자몽 허니 블랙티와 아메리카노 사이 그 어딘가
post-custom-banner

0개의 댓글