๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Java

[Java-๊ธฐ์ดˆ] Iterator๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์š”์†Œ๋ฅผ ์ˆœํšŒํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”์„œ๋“œ

by ์ฝ”๋”ฉํ•˜๋Š” ๋ถ•์–ด 2021. 2. 22.
๋ฐ˜์‘ํ˜•

โ–ถ Iterator๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์š”์†Œ๋ฅผ ์ˆœํšŒํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”์„œ๋“œ

MemberArrayList.java์˜ removeMember( ) ๋ฉ”์„œ๋“œ๋ฅผ ๋ณด๋ฉด for ๋ฌธ๊ณผ get(i) ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํšŒ์›์„ ์ˆœ์ฐจ์ ์œผ๋กœ ํ•˜๋‚˜์”ฉ ๊บผ๋‚ด๋ฉด์„œ ๋งค๊ฐœ๋ณ€์ˆ˜์™€ ๊ฐ™์€ ์•„์ด๋””๋ฅผ ์ฐพ๋Š”๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ˆœ์„œ๊ฐ€ ์—†๋Š” Set ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•œ ๊ฒฝ์šฐ์—๋Š” get(i) ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด ๋•Œ Iterator๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

Iterator๋Š” Collection ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•œ ๊ฐ์ฒด์—์„œ ๋ฏธ๋ฆฌ ์ •์˜๋˜์–ด์žˆ๋Š” iterator( ) ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ์ฐธ์กฐํ•œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด Collection์„ ๊ตฌํ˜„ํ•œ ArrayList์— iterator( ) ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด Iterator ํด๋ž˜์Šค๊ฐ€ ๋ฐ˜ํ™˜๋˜๋ฏ€๋กœ ๋‹ค์Œ์ฒ˜๋Ÿผ Iteratorํ˜• ๋ณ€์ˆ˜์— ๋Œ€์ž…ํ•ด ์‚ฌ์šฉํ•œ๋‹ค.

โ€‹

Iterator ๋ฉ”์„œ๋“œ์—๋Š” hasNext( ), next( ), remove( )๊ฐ€ ์žˆ๋‹ค.

hasNext( ) : ์ฝ์–ด์˜ฌ ์š”์†Œ๊ฐ€ ๋‚จ์•„์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๋ฉ”์„œ๋“œ. ์š”์†Œ๊ฐ€ ์žˆ์œผ๋ฉด true, ์—†์œผ๋ฉด false

next( ) : ๋‹ค์Œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜ํ™˜

remove( ) : next( )๋กœ ์ฝ์–ด์˜จ ์š”์†Œ๋ฅผ ์‚ญ์ œํ•œ๋‹ค.

public boolean removeMember(int memberID) {      
		Iterator<Member> ir = arrayList.iterator();  // Iterator ๋ฐ˜ํ™˜
		while(ir.hasNext()) {                        // ์š”์†Œ๊ฐ€ ์žˆ๋Š” ๋™์•ˆ
			Member member = ir.next();               // ๋‹ค์Œ ํšŒ์›์„ ๋ฐ˜ํ™˜๋ฐ›์Œ
			int tempId = member.getMemberID();
			if (tempId == memberID) {                // ํšŒ์› ์•„์ด๋””๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์ผ์น˜ํ•˜๋ฉด
				arrayList.remove(member);            // ํ•ด๋‹น ํšŒ์›์„ ์‚ญ์ œ
				return true;
			}
		}
		System.out.println(memberID + " ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.");  // ๋๋‚ ๋•Œ๊นŒ์ง€ ์‚ญ์ œํ•˜๋ ค๋Š” ๊ฐ’์„ ์ฐพ์ง€ ๋ชปํ•œ ๊ฒฝ์šฐ
		return false;
	}

์ด๋ ‡๊ฒŒ ์ˆœ์„œ๊ฐ€ ์—†๋Š” ํด๋ž˜์Šค๋„ Iterator๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์š”์†Œ๋ฅผ ์ˆœํšŒํ•  ์ˆ˜ ์žˆ๋‹ค.

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€