๋ฐ˜๋ณต์ž

์ž๋ฐ” ์ปฌ๋ ‰์…˜
๋ ˆ๋ฒจ 7 , ๋ ˆ์Šจ 3
์‚ฌ์šฉ ๊ฐ€๋Šฅ

"์•ˆ๋…•, ์•„๋ฏธ๊ณ !"

"์•ˆ๋…•, ์—˜๋ฆฌ!"

"์˜ค๋Š˜์€ ๋ฐ˜๋ณต์ž์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค."

"๋ฐ˜๋ณต์ž๋Š” ์‚ฌ์‹ค์ƒ ์ปฌ๋ ‰์…˜๊ณผ ๋™์‹œ์— ๋ฐœ๋ช…๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ปฌ๋ ‰์…˜์˜ ์ฃผ์š” ๋ชฉ์ ์€ ์š”์†Œ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ฒƒ์ด๋ฉฐ ๋ฐ˜๋ณต์ž์˜ ์ฃผ์š” ๋ชฉ์ ์€ ์ด๋Ÿฌํ•œ ์š”์†Œ๋ฅผ ํ•˜๋‚˜์”ฉ ๊ฒ€์ƒ‰ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค."

"์š”์†Œ ์ง‘ํ•ฉ์„ ์–ป๋Š” ๊ฒƒ์ด ๋ฌด์—‡์ด ๊ทธ๋ ‡๊ฒŒ ์–ด๋ ค์šด๊ฐ€์š”?"

"์ฒซ์งธ, 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์— ๋“ฑ์žฅํ•˜๋ฉด์„œ ์ƒํ™ฉ์ด ๋” ๊ฐ„๋‹จํ•ด์กŒ์Šต๋‹ˆ๋‹ค."

"์ด์ œ ์ด ์ฝ”๋“œ๋Š” ํ›จ์”ฌ ๊ฐ„๊ฒฐํ•˜๊ณ  ์ฝ๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค."

์ „์— ํ›„์—
TreeSet<String> set = new TreeSet<String>();
Iterator<String> iterator = set.iterator();

while (iterator.hasNext())
{
 String item = iterator.next();
 System.out.println(item);
}
TreeSet<String> set = new TreeSet<String>();

for(String item : set)
{
 System.out.println(item);
}

"์ด๊ฒƒ์€ ๋™์ผํ•œ ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค! ์ดํ„ฐ๋ ˆ์ดํ„ฐ๋Š” ๋‘ ๊ฒฝ์šฐ ๋ชจ๋‘ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค."

"๋‹จ์ง€ 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() ์ž‘์—…์€ ๋งค์šฐ ๋น ๋ฆ…๋‹ˆ๋‹ค."

"ํ . ๋‹น์‹ ์€ ๋‚˜๋ฅผ ์„ค๋“ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ช…์‹ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค."

"๊ณ ๋งˆ์›Œ, ์—˜๋ฆฌ!"

์ฝ”๋ฉ˜ํŠธ
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION