일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 1
- spring
- 스프링
- layout #thymeleaf #화면분할
- Component
- autowired
- zepettoworld.com
- git #gitlab #github
- 스프링 부트
- Bean
- DispatcherServlet
- 오토와이어드
- Today
- Total
기록과 정리
Iterable과 Iterator 본문
이름이 이 두 개념에 대해 질문을 받았고 확실한 대답을 하지못하였기에 정리를 하려고 한다. 써봤을 법한 이름이지만 정확히 정리를 해보도록하자.
Iterable
jdk 1.5 부터 생겨난 interface 이며 "for-each loop" 문(향상된 for문) 에서 대상이 되도록 도와준다. 두 개의 default 메서드와 하나의 abstract(추상)메서드를 가지고 있다. ->
Collection의 상위 인터페이스이기 때문에 Collection을 상속받는 Set, List 등은 iterable 이 가지고 있는 메서드 iterator를 상속받아 사용할 수 있다.
forEach default 메서드의 경우, jdk8부터 추가된 디폴트 메서드이다. 해당 forEach 메서드 덕에 stream().forEach 가 아닌 , 컬렉션에서 바로 forEach가 가능하도록 되었다. ( stream을 추가적으로 만드는 비용을 없애줌 )
Iterator
Iterable 인터페이스의 추상메서드 Iterator와 별개로, Iterator라는 인터페이스가 존재한다. jdk1.2 부터 사용하기 시작했다.
https://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html
hasNext, next, remove등의 메서드를 가지고 있으며 Collection 데이터를 하나씩 읽어들어올때 사용한다.
Iterable vs Iterator
여기까지 읽으면 Iterable과 큰차이가 없는데 , 사용법에 대해 구분지어 생각해보도록 하자.
아까 위에서 말했듯, Iterable 인터페이스를 implement하게 되면 하위 객체는 for-each loop가 가능하게 된다.
Iterator 의 경우 , hasNext, next 메서드들을 이용하여 여러 종류의 컬렉션을 반복하도록 도와준다.
'IT > Java' 카테고리의 다른 글
제네릭(Generic)에 대하여 (0) | 2022.02.11 |
---|---|
자바의 정석 6장) 객체지향 프로그래밍 1 (0) | 2021.12.06 |
Date와 Time API (0) | 2021.08.31 |
Java Optional (0) | 2021.08.23 |
Java8 Stream API (스트림 API) (0) | 2021.08.12 |