관리 메뉴

개발하는 동그리

[Java] Iterator 인터페이스 본문

IT 정보/Java

[Java] Iterator 인터페이스

개발하는 동그리 2022. 5. 16. 23:28
반응형

 

Iterator

자바의 컬렉션 프레임워크에서 컬렉션에 저장되어있는 요소들을 읽어오는 방법을 Iterator 인터페이스로 표준화 했다.
컬렉션 프레임워크는 아래 그림과 같이 데이터를 저장하는 구조에 따라 3가지 인터페이스로 구성된다. 

List는 순서를 유지하는 데이터 집합이다. 따라서 중복이 허용된다. 
Set 은 순서를 유지하지 않는 데이터 집합이다. 따라서 중복을 허용하지 않는다.
Map은 키(key)와 값(Value)로 이루어진 데이터 집합으로 순서는 유지되지 않으며, 키값은 중복을 허락하지 않는다. 

이 3가지 데이터 집합체(Set, List , Map) 에서 정보를 얻어내기 위한것이 Iterator다.

집합체를 다룰때는 개별적인 클래스에 대해 데이터를 읽는 방법을 알아야 하기 때문에 각 컬렉션에 접근이 힘들어지기 때문에, Iterator를 사용하면 그 집합체 안에있는 항복들에 접근할 수 있는 방법을 제공한다. (다형성)

Iterator 의 메소드에는 hasNext(), next(), remove()가 있다.  

hasNext() : 읽어올 요소가 있으면 true, 없으면 false
next() : 컬렉션에서 하나의 객체를 가져온다.
remove() : 컬렉션에서 객체를 제거한다. 

예시1).요소 확인 후 객체 반복해서 꺼내는 방법.

List list = new ArrayList();
		Iterator it = list.iterator(); 
		
		while(it.hasNext()) // 다음 객체 유무 확인
			System.out.println(it.next()); // 출력

예시2).강화된 for문을 사용해서 객체 꺼내는 방법

List<String> list = ...;
for(String str : list) {
	// 저장된 객체 수만큼 반복
}

예시3).같은 객체가 있으면 찾아서 삭제하는 방법

Iterator<String> iterator = list.iterator();
while(iterator.hasNext()){ //다음 객체 유무 확인
	String nn = iterator.next(); // 객체 꺼내기
	if(nn.equals("nn")){ / 꺼낸 객체와 비교 후
		iterator.remove(); //해당 객체 제거
	}
}

위와 같은 식으로 사용하면 된다. 

반응형