Java / Iterator

조익준·2023년 5월 10일
0

Java

목록 보기
3/4
post-thumbnail

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

1. 왜 쓰는 걸까?

Colletion 인터페이스를 상속하는 List, Set 그리고 상속하지 않는 Map인터페이스들은 각각 데이터를 가져오는 방식이 다 다르다. Iterator는 그 방식을 표준화시킨다.

2. iterator();

Collection 인터페이스에는 iterator()메서드가 구현되어있다.

반환 타입은 Iterator이다.
그렇다면 Collection인터페이스를 상속받는 List, Set 인터페이스를 또 상속받는 ArrayList, LinkedList, Hashset, TreeSet 클래스들은 강제적으로 이 메서드를 오버라이딩하게 되어있다.

그렇다면 우리는 이렇게 표현할 수 있다.

List li = new ArrayList();
li.iterator(); (반환타입이 Iterator이다)
Iterator it = li.iterator();

이러면 참조변수 it를 통해 Iterator의 메서드들을 사용할 수 있게 된다.

Iterator의 메서드는 다음과 같다.

Iterator.hasNext()

  • Iterator 안에 다음 값이 들어있는지 확인

들었으면 true, 안들었음 false

Iterator.next()

  • iterator의 다음 값 가져오기

Iterator.remove()

  • iterator에서 next() 시에 가져왔던 값을

컬렉션(List, Set, Map) 등에서 삭제

반드시 next() 후에 사용해야 함

Map에서의 활용도

반면 Map은 Collection인터페이스를 상속받는 클래스가 아니다.
하지만 Map 인터페이스의 메서드중에 entrySet();이라는 메서드가 있는데
이것의 반환타입은 Set이다.

Map<K, V> m = new HashMap<>(); 라면
m.entrySet();의 반환타입은 Set<Map.Entry<K, v>>가 된다.
Set인터페이스의 iterator메서드를 사용할 수 있게 된다.
Set s = m.entrySet();
Iterator it = m.entrySet().iterator();이 가능하게 된다.

profile
비가역적인사람

0개의 댓글

관련 채용 정보