"์๋ , ์๋ฏธ๊ณ !"
"์๋ , ์๋ฆฌ!"
"์ค๋์ ๋ฐ๋ณต์์ ๋ํด ์ด์ผ๊ธฐํ๊ณ ์ถ์ต๋๋ค."
"๋ฐ๋ณต์๋ ์ฌ์ค์ ์ปฌ๋ ์ ๊ณผ ๋์์ ๋ฐ๋ช ๋์์ต๋๋ค. ์ปฌ๋ ์ ์ ์ฃผ์ ๋ชฉ์ ์ ์์๋ฅผ ์ ์ฅํ๋ ๊ฒ์ด๋ฉฐ ๋ฐ๋ณต์์ ์ฃผ์ ๋ชฉ์ ์ ์ด๋ฌํ ์์๋ฅผ ํ๋์ฉ ๊ฒ์ํ๋ ๊ฒ์ ๋๋ค."
"์์ ์งํฉ์ ์ป๋ ๊ฒ์ด ๋ฌด์์ด ๊ทธ๋ ๊ฒ ์ด๋ ค์ด๊ฐ์?"
"์ฒซ์งธ, Set๊ณผ ๊ฐ์ ์ผ๋ถ ์ปฌ๋ ์ ์ ์์์๋ ์ ํด์ง ์์๊ฐ ์๊ฑฐ๋ ์์๊ฐ ์ง์์ ์ผ๋ก ๋ณ๊ฒฝ๋ฉ๋๋ค."
"๋ ๋ฒ์งธ๋ก, ์ผ๋ถ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ ๋งค์ฐ ๋ณต์กํ ๋ฐฉ์์ผ๋ก ๊ฐ์ฒด๋ฅผ ์ ์ฅํ ์ ์์ต๋๋ค. ๋ค๋ฅธ ๊ทธ๋ฃน, ๋ชฉ๋ก ๋ฑ์ ์์ต๋๋ค. ์ฆ, ๋ชจ๋ ์์๋ฅผ โโ์์๋๋ก ์ ๋ฌํ๋ ๊ฒ์ ์ฌ์ํ ์์ ์ด ์๋๋๋ค."
"์ ์งธ, ์ปฌ๋ ์ ์ ๋ณ๊ฒฝ๋๋ ๊ฒฝํฅ์ด ์์ต๋๋ค. ์ปฌ๋ ์ ์ ์ ์ฒด ๋ด์ฉ์ ํ์ํ๊ธฐ๋ก ๊ฒฐ์ ํ์ง๋ง ์ถ๋ ฅ ์ค๊ฐ์์ JVM์ด ์ปฌ๋ ์ ์์์ ์ ๋ฐ์ ๋์ฒดํ๋ ๋ค๋ฅธ ์ค๋ ๋๋ก ์ ํํ๋ค๊ณ ๊ฐ์ ํฉ๋๋ค. ๋ฐ๋ผ์ ์ถ๋ ฅ ๋์ ๋๊ฐ ๋ญ ์์."
"ํ ..."
"ํ์ง๋ง! ์ด๊ฒ๋ค์ ๋ฐ๋ก ์ดํฐ๋ ์ดํฐ๊ฐ ํด๊ฒฐํ ์ ์๋ ์ข ๋ฅ์ ๋ฌธ์ ์ ๋๋ค. ์ดํฐ๋ ์ดํฐ๋ ํํธ์ผ๋ก๋ ๋ชจ๋ ํ๋ผ์ด๋น ๋ฐ์ดํฐ์ ์ก์ธ์คํ ์ ์๊ณ ๋ด๋ถ ๊ตฌ์กฐ๋ฅผ ์๊ณ ์๋ ์ปฌ๋ ์ ๋ด์ ํน์ ๊ฐ์ฒด์ ๋๋ค. , ๊ณต๊ฐ Iterator ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ์ฌ ๋ชจ๋ ์ฌ๋์ด ์์ ๋ฐฉ๋ฒ์ ์ ์ ์์ต๋๋ค. "
"์ผ๋ถ ์ดํฐ๋ ์ดํฐ์๋ ์ดํฐ๋ ์ดํฐ๊ฐ ์์ฑ๋ ๋ ์ปฌ๋ ์ ์ ๋ชจ๋ ์์๊ฐ ๋ณต์ฌ๋๋ ๋ด๋ถ ๋ฐฐ์ด์ด ์์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์ปฌ๋ ์ ์ ๋ํ ํ์ ๋ณ๊ฒฝ ์ฌํญ์ด ์์์ ์๋ ์์์ ์ํฅ์ ๋ฏธ์น์ง ์์ต๋๋ค."
" for each ๋ก ์์ ํ ๋ ์ด ๋ฌธ์ ๋ฅผ ์ ํ ๊ฒ ๊ฐ์ต๋๋ค . ์ปฌ๋ ์ ์ ๋ฐ๋ณตํ๋ฉด์ ๋์์ ์ปฌ๋ ์ ์์ ์์๋ฅผ ์ ๊ฑฐํ ์ ์์ต๋๋ค. ์ด๊ฒ์ ๋ชจ๋ ๋ฐ๋ณต์๊ฐ ์๋ํ๋ ๋ฐฉ์ ๋๋ฌธ์ ๋๋ค."
"๋์์ฑ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ถ๊ฐ๋ ์ ์ปฌ๋ ์ ์์ ๋ฐ๋ณต์๋ ์ด ๋ฌธ์ ๋ฅผ ์ ๊ฑฐํ๊ธฐ ์ํด ์ฌ์์ ๋์์ต๋๋ค."
"๋ฐ๋ณต์๊ฐ ์ด๋ป๊ฒ ์๋ํ๋์ง ์๋ ค๋๋ฆฌ๊ฒ ์ต๋๋ค."
"Java์๋ ํน๋ณํ Iterator ์ธํฐํ์ด์ค๊ฐ ์์ต๋๋ค. ๋ค์์ ๊ทธ ๋ฐฉ๋ฒ์ ๋๋ค."
Iterator<E> ์ธํฐํ์ด์ค์ ๋ฉ์๋ | ์ค๋ช |
---|---|
boolean hasNext() |
์ถ๊ฐ ์์๊ฐ ์๋์ง ํ์ธ |
E next() |
ํ์ฌ ์์๋ฅผ ๋ฐํํ๊ณ ๋ค์ ์์๋ก ์ด๋ํฉ๋๋ค. |
void remove() |
ํ์ฌ ์์๋ฅผ ์ ๊ฑฐํฉ๋๋ค. |
"๋ฐ๋ณต์๋ฅผ ์ฌ์ฉํ๋ฉด ์ปฌ๋ ์ ์ ๋ชจ๋ ์์๋ฅผ โโ์ฐ์์ ์ผ๋ก ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค. ๋ฐ๋ณต์๋ฅผ InputStream๊ณผ ๊ฐ์ ๊ฒ์ผ๋ก ์๊ฐํ๋ ๊ฒ์ด ๋ ๋ ผ๋ฆฌ์ ์ ๋๋ค. ๋ชจ๋ ๋ฐ์ดํฐ๊ฐ ์์ง๋ง ์์ ์ ์์ฐจ์ ์ผ๋ก ์ถ๋ ฅํ๋ ๊ฒ์ ๋๋ค."
" ๋ค์ () ๋ฉ์๋๋ ์ปฌ๋ ์ ์ ๋ค์ ์์๋ฅผ ๋ฐํํฉ๋๋ค."
" hasNext () ๋ฉ์๋๋ ์์๊ฐ ๋ ์๋์ง ํ์ธํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค."
"๊ทธ๋ฆฌ๊ณ ์ ๊ฑฐ ()๋ ํ์ฌ ์์๋ฅผ ์ ๊ฑฐํฉ๋๋ค."
"์ง๋ฌธ ์๋์?"
"๋ฉ์๋ ์ด๋ฆ์ด ์ด์ํ ์ด์ ๋ ๋ฌด์์ ๋๊น? isEmpty() ๋ฐ getNextElement()๊ฐ ์๋ ์ด์ ๋ ๋ฌด์์ ๋๊น?"
"๊ทธ๊ฒ ๋ ๋ง์ด ๋์ง ์์๊น์?"
"๋ ๋ง์ด ๋๊ฒ ์ง๋ง ์ด๋ฆ์ ๋ฐ๋ณต์๊ฐ ์ด์ ์ ๋ฑ์ฅํ C++ ์ธ์ด์์ ์ ๋ํ์ต๋๋ค."
"๊ทธ๋ ๊ตฌ๋. ๊ณ์ํ์."
"๋ฐ๋ณต์ ์ธ์๋ ๋ฐ๋ณต์๋ฅผ ์ง์ํ๋ ๋ชจ๋ ์ปฌ๋ ์ ์์ ๊ตฌํํด์ผ ํ๋ Iterable ์ธํฐํ์ด์ค๋ ์์ต๋๋ค. ๋ค์๊ณผ ๊ฐ์ ๋จ์ผ ๋ฉ์๋๊ฐ ์์ต๋๋ค."
Iterable<T> ์ธํฐํ์ด์ค์ ๋ฉ์๋ | ์ค๋ช |
---|---|
Iterator<T>iterator() |
๋ฐ๋ณต์ ๊ฐ์ฒด๋ฅผ ๋ฐํํฉ๋๋ค. |
"๋ชจ๋ ์ปฌ๋ ์ ์์ ์ด ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ๋ณต์ ๊ฐ์ฒด๊ฐ ํด๋น ์์๋ฅผ ํต๊ณผํ๋๋ก ํ ์ ์์ต๋๋ค. TreeSet ์ ๋ชจ๋ ์์๋ฅผ โโ์ดํด๋ณด๊ฒ ์ต๋๋ค. "
TreeSet<String> set = new TreeSet<String>();
Iterator<String> iterator = set.iterator();
while (iterator.hasNext())
{
String item = iterator.next();
System.out.println(item);
}
"์ด์ ๊ฐ์ ๋ฐ๋ณต์๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๊ทธ๋ค์ง ํธ๋ฆฌํ์ง ์์ต๋๋ค. ๋ถํ์ํ๊ณ ๋ช ๋ฐฑํ ์ฝ๋๊ฐ ๋๋ฌด ๋ง์ต๋๋ค. for -each ๋ฃจํ๊ฐ Java์ ๋ฑ์ฅํ๋ฉด์ ์ํฉ์ด ๋ ๊ฐ๋จํด์ก์ต๋๋ค."
"์ด์ ์ด ์ฝ๋๋ ํจ์ฌ ๊ฐ๊ฒฐํ๊ณ ์ฝ๊ธฐ ์ฝ์ต๋๋ค."
์ ์ | ํ์ |
---|---|
|
|
"์ด๊ฒ์ ๋์ผํ ์ฝ๋์ ๋๋ค! ์ดํฐ๋ ์ดํฐ๋ ๋ ๊ฒฝ์ฐ ๋ชจ๋ ์ฌ์ฉ๋ฉ๋๋ค."
"๋จ์ง for-each ๋ฃจํ ์์ ์ฌ์ฉ์ด ์จ๊ฒจ์ ธ ์๋ค๋ ๊ฒ๋ฟ์ ๋๋ค . ์ค๋ฅธ์ชฝ ์ฝ๋์๋ ๋นจ๊ฐ์ ํ ์คํธ๊ฐ ์ ํ ์์ต๋๋ค. ๋ฐ๋ณต์์ ์ฌ์ฉ์ ์์ ํ ์จ๊ฒจ์ ธ ์์ต๋๋ค."
" for-each ๋ฃจํ๋ ๋ฐ๋ณต์๋ฅผ ์ง์ํ๋ ๋ชจ๋ ๊ฐ์ฒด์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ฆ, ๊ณ ์ ํ ํด๋์ค๋ฅผ ์์ฑํ๊ณ iterator ( ) ๋ฉ์๋๋ฅผ ์ถ๊ฐํ๊ณ for-each ๊ตฌ๋ฌธ ์์ ํด๋น ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค ."
"์! ๋ฌผ๋ก ๋๋ง์ ์ปฌ๋ ์ ๊ณผ ์ดํฐ๋ ์ดํฐ๋ฅผ ์์ฑํ๊ณ ์ถ์ง๋ ์์ง๋ง ์ ์ฌ ๊ณ ๊ฐ์ ์ฌ์ ํ โโ์ ํน์ ์ ๋๋ค. ๋ฉ๋ชจํด ๋๊ฒ ์ต๋๋ค."
๋ํ ์์ฒด ์ธํฐํ์ด์ค๊ฐ ์๋ ๋ ๋ค๋ฅธ ์ธ๊ธฐ ์๋ ๋ฐ๋ณต์ ์ ํ์ด ์์ต๋๋ค. ๋ชฉ๋ก์ ๋ํ ๋ฐ๋ณต์, ์ฆ ListIterator ์ ๋ํด ์ด์ผ๊ธฐํ๊ณ ์์ต๋๋ค .
"๊ตฌํ์ ๊ด๊ณ์์ด ๋ชฉ๋ก์ ์์์ ์์๋ฅผ ์ ์งํ๋ฏ๋ก ๋ฐ๋ณต์๋ฅผ ํตํด ์ข ๋ ํธ๋ฆฌํ๊ฒ ์์ ํ ์ ์์ต๋๋ค."
"๋ค์์ ListIterator <E> ์ธํฐํ์ด์ค ์ ๋ฉ์๋์ ๋๋ค ."
๋ฐฉ๋ฒ | ์ค๋ช |
---|---|
boolean hasNext() |
์์ ์์๊ฐ ๋ ์๋์ง ํ์ธํฉ๋๋ค. |
E next() |
๋ค์ ์์๋ฅผ ๋ฐํํฉ๋๋ค. |
int nextIndex() |
๋ค์ ์์์ ์ธ๋ฑ์ค๋ฅผ ๋ฐํ |
void set(E e) |
ํ์ฌ ์์์ ๊ฐ์ ๋ณ๊ฒฝํฉ๋๋ค. |
boolean hasPrevious() |
๋ค์ ์์๊ฐ ์๋์ง ํ์ธํฉ๋๋ค. |
E previous() |
์ด์ ์์๋ฅผ ๋ฐํ |
int previousIndex() |
์ด์ ์์์ ์ธ๋ฑ์ค๋ฅผ ๋ฐํ |
void remove() |
ํ์ฌ ์์๋ฅผ ์ ๊ฑฐํฉ๋๋ค. |
void add(E e) |
๋ชฉ๋ก ๋์ ์์๋ฅผ ์ถ๊ฐํฉ๋๋ค. |
"์ฆ, ์ฌ๊ธฐ์ ์ฐ๋ฆฌ๋ ์๋ค๋ก ์ด๋ํ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ช ๊ฐ์ง ๋ค๋ฅธ ์์ ๊ธฐ๋ฅ์ด ์์ต๋๋ค."
"ํฅ๋ฏธ๋ก์ด ์ผ์ด๊ตฐ์. ์ด๋์ ์ฐ์ฃ ?"
"์ฐ๊ฒฐ๋ ๋ชฉ๋ก์์ ์๋ค๋ก ์ด๋ํ๋ค๊ณ ๊ฐ์ ํฉ๋๋ค. get ์์ ์ ๋ค์ ๋๋ฆฌ์ง๋ง next() ์์ ์ ๋งค์ฐ ๋น ๋ฆ ๋๋ค."
"ํ . ๋น์ ์ ๋๋ฅผ ์ค๋ํ์ต๋๋ค. ๋ช ์ฌํ๊ฒ ์ต๋๋ค."
"๊ณ ๋ง์, ์๋ฆฌ!"
GO TO FULL VERSION