자료구조를 공부하던 중 Iterable과 Iterator가 나왔다. Iterator는 알고 있었지만 Iterable은 알지 못했기 때문에 정리해보았다.
Java 내부의 코드를 살펴보면,List
, Set
, Queue
⇒ Collection
⇒ Iterable
순서로 extends하는 관계를 가지고 있는 것을 알 수 있다.
Iterable이 무엇이길래 extends 하고 있는지 알아보자.
Iterable
JAVA API 문서를 보면 Iterable 인터페이스에서 Iterator를 반환하는 iterator()
가 메소드로 선언 되어 있음을 볼 수 있다.
이를 구현하는 클래스들은 강제적으로 iterator()
메소드를 구현해야 하고, forEach
와 iterator()
를 사용할 수 있게 되는 것이다.
Iterator
Iterator는 Collection에 저장된 요소를 읽어오는 것을 표준화한 것이고, 데이터를 하나씩 읽을 때 사용한다. Iterator를 통해 hasNext()
, next()
등의 메소드가 사용이 가능해진다.
정리
Iterable은 하위 클래스에서 iterator()
의 생성을 강제하는 역할을 하게 된다. 따라서 Iterable을 상속받은 Collection의 하위 클래스들은 모두 iterator()
를 가지고 있게 되며 hasNext()
, next()
등을 구현하고 있기 때문에 이를 활용할 수 있게 되는 것이다.
forEach 사용 예시
List<String> list = new ArrayList<>(Arrays.asList("A", "B", "C"));
for (String str : list)
System.out.println(str);
// 출력
A
B
C
iterator 사용 예시
List<String> list = new ArrayList<>(Arrays.asList("A", "B", "C"));
Iterator<String> iter = list.iterator();
while (iter.hasNext()) {
System.out.println(iter.next());
}
// 출력
A
B
C
'Programming > Java' 카테고리의 다른 글
[Java] Java란? Java의 특징 (0) | 2021.02.16 |
---|---|
[Java] Pattern, Matcher Class 사용법과 메소드 정리 (8) | 2021.01.21 |
[Java] 정규식 문법 정리(Regex) (2) | 2021.01.20 |
[Java] JVM, JDK, JRE의 차이 (0) | 2021.01.01 |
ArrayList와 LinkedList의 차이, 선택하기 (0) | 2020.12.13 |