๋ฐ์ํ
Iterator
๋ฌด์์ธ๊ฐ ๋ง์ด ๋ชจ์ฌ ์์ ๋ ์ด๋ฅผ ์์๋๋ก ๊ฐ๋ฆฌํค๋ฉฐ ์ ์ฒด๋ฅผ ๊ฒ์ํ๊ณ ์ฒ๋ฆฌ๋ฅผ ๋ฐ๋ณตํ๋ ๊ฒ
- iterator: ๋ฐ๋ณต์
Iterable<E> Interface
์ฒ๋ฆฌ๋ฅผ ๋ฐ๋ณตํ ๋์์ ๋ํ๋
- ์ด ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๋ ํด๋์ค๋ ๋ฐฐ์ด์ฒ๋ผ ๋ญ๊ฐ ๋ง์ด ๋ชจ์ฌ์๋ ๊ฒ(=์งํฉ์ฒด)๊ฐ ๋๋ค
package java.lang.*
public interface Iterable<E> {
public abstract Iterator<E> iterator();
}
- `iterator()`: ์งํฉ์ฒด์ ํฌํจ๋ ์์๋ฅผ ํ๋ํ๋ ์ฒ๋ฆฌํด ๋๊ฐ๊ณ ์ถ์ ๋ ์ฌ์ฉ
Iterator<E> Interface
- ํ๋ํ๋์ ์์์ฒ๋ฆฌ๋ฅผ ๋ฐ๋ณตํ๊ธฐ ์ํ ๊ฒ → ๋ฃจํ ๋ณ์ ์ญํ
package java.util.*
public interface Iterator<E> {
public abstract boolean hasNext();
public abstract E next();
}
- `hasNext()`: ๋ค์ ์์๊ฐ ์กด์ฌํ๋์ง ์์๋ณด๋ ๋ฉ์๋
- ๋ฃจํ ์ข ๋ฃ ์กฐ๊ฑด์ผ๋ก ์ฌ์ฉ
- `next()`: ๋ค์ ์์๋ฅผ ๊ฐ์ ธ์ค๋ ๋ฉ์๋
- ๋ค์ `next()` ๋ฉ์๋๋ฅผ ํธ์ถํ ๋, ์ ๋๋ก ๋ค์ ์์๋ฅผ ๋ฐํํ ์ ์๋๋ก ๋ด๋ถ ์ํ๋ฅผ ๋ค์์ผ๋ก ์งํ์์ผ ๋๋ ์ญํ ํฌํจ
๐ก Java์ ํ์ฅ for๋ฌธ์ Iterable ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ํด๋์ค์ ์ธ์คํด์ค์ ๋ํด ๋ด๋ถ์ ์ผ๋ก Iterator๋ฅผ ์ฌ์ฉํ์ฌ ์ฒ๋ฆฌ → Java์ ํ์ฅ for๋ฌธ์๋ Iterator ํจํด์ด ์ฌ์ฉ๋๋ค๊ณ ๋ณผ ์ ์์!
Iterator ํจํด์ ๋ฑ์ฅ์ธ๋ฌผ
- `Iterator`(๋ฐ๋ณต์)
- ์์๋ฅผ ์์๋๋ก ๊ฒ์ํ๋ ์ธํฐํ์ด์ค(API)๋ฅผ ๊ฒฐ์
- hasNext() , next() ๋ฅผ ๊ฒฐ์ (Iterator<E>)
- `ConcreteIterator` (๊ตฌ์ฒด์ ์ธ ๋ฐ๋ณต์)
- Iterator๊ฐ ๊ฒฐ์ ํ ์ธํฐํ์ด์ค๋ฅผ ์ค์ ๋ก ๊ตฌํ
- ๊ฒ์์ ํ์ํ ์ ๋ณด(index ๋ฑ..)์ ๊ฐ์ง๊ณ ์์ด์ผ ํจ
- `Aggregate` (์งํฉ์ฒด)
- Iterator๋ฅผ ๋ง๋ค์ด๋ด๋ ์ธํฐํ์ด์ค๋ฅด ๊ฒฐ์
- Iterator ๋ฉ์๋๋ฅผ ๊ฒฐ์ (Iterable<E>)
- `ConcreteAggregate`(๊ตฌ์ฒด์ ์ธ ์งํฉ์ฒด)
- Aggregate๊ฐ ๊ฒฐ์ ํ ์ธํฐํ์ด์ค๋ฅผ ์ค์ ๋ก ๊ตฌํ
- ๊ตฌ์ฒด์ ์ธ Iterator ์ญํ → ConcreteIterator์ ์ธ์คํด์ค๋ฅผ ๋ง๋ค์ด ๋
Iterator๋ฅผ ์ฌ์ฉํด์ผํ๋ ์ด์
- Iterator๋ฅผ ์ฌ์ฉํจ์ผ๋ก์จ ๊ตฌํ๊ณผ ๋ถ๋ฆฌํ์ฌ ๋ฐ๋ณต
Iterator<Book> it = bookShelf.iterator();
while (it.hasNext()) {
Book book = it.next();
System.out.println(boot.getName());
}
- BookShelf๋ฅผ ์ด๋ป๊ฒ ๋ณ๊ฒฝํ๋ iterator ๋ฉ์๋๋ฅผ ๊ฐ์ง๊ณ ์๊ณ ์ฌ๋ฐ๋ฅธ Iterator<Book>์ ๋ฐํํ๋ฉด while ๋ฃจํ๋ฅผ ๋ณ๊ฒฝํ์ง ์์๋ ๋์ํ๋ค. → while ๋ฃจํ๊ฐ ConcreteAggregate ๊ตฌํ์ ์์กดํ์ง ์๋๋ค.
- ์ฌ์ฌ์ฉ์ฑ ์ด์ง!
https://m.yes24.com/Goods/Detail/115576266
JAVA ์ธ์ด๋ก ๋ฐฐ์ฐ๋ ๋์์ธ ํจํด ์ ๋ฌธ - ์์ค24
๊ฐ์ฒด์งํฅ ์ด์ฌ์๋ ์ดํดํ๊ธฐ ์ฌ์ด ๋์์ธ ํจํด ์ ๋ฌธ์ํ๋ก๊ทธ๋๋ฐ์ ํ๋ค ๋ณด๋ฉด ์์ ๊ณผ ๊ฐ์ ์ผ์ ๋ฐ๋ณตํ๊ณ ์๋ค๊ณ ๋๋ ๋๊ฐ ์๋ค. ๊ฒฝํ์ด ๋์ด ๊ฐ์๋ก ์ด๋ฌํ ‘ํจํด’์ด ์์ ์ ๋จธ๋ฆฟ์์ ๋ง์ด
m.yes24.com
๋ฐ์ํ