Item 51. Method Signature

๋ฉ”์„œ๋“œ ์‹œ๊ทธ๋‹ˆ์ฒ˜๋ฅผ ์‹ ์ค‘ํžˆ ์„ค๊ณ„ํ•˜๋ผ

๋ฉ”์„œ๋“œ๋ฅผ ์„ค๊ณ„ํ•  ๋•Œ๋Š” ์ผ๊ด€๋œ ๋ฉ”์„œ๋“œ ๋ช…๋ช… ๊ทœ์น™์„ ๋”ฐ๋ผ์•ผ ํ•˜๊ณ , ๋„ˆ๋ฌด ๋งŽ์€ ํŽธ์˜ ๋ฉ”์„œ๋“œ๋ฅผ ์ •์˜ํ•˜๋ฉด ์•ˆ๋œ๋‹ค. ๋˜ํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜ ๋ชฉ๋ก์€ ์•„๋ž˜์™€ ๊ฐ™์€ ์ด์œ ๋กœ ์งง๊ฒŒ 4๊ฐœ ์ดํ•˜๋กœ ์ ๊ฒŒ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

  • ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ „๋ถ€ ๊ธฐ์–ตํ•˜๊ธฐ ์‰ฝ์ง€ ์•Š์Œ

  • ๊ฐ™์€ ํƒ€์ž…์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ ๋‚˜์˜ค๋Š” ๊ฒฝ์šฐ, ํŠนํžˆ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ํƒ€์ž…์ด ๊ธฐ๋ณธ ํƒ€์ž…์ด๋ผ๋ฉด ์‹ค์ˆ˜ํ•˜๊ธฐ ์‰ฌ์›€(์˜๋„์น˜ ์•Š์€ ํ˜•๋ณ€ํ™˜์œผ๋กœ ์ธํ•œ ์˜ค๋ฅ˜ ๋ฐœ์ƒ ๊ฐ€๋Šฅ)

๋งค๊ฐœ๋ณ€์ˆ˜ ๋ชฉ๋ก์„ ์ค„์ด๋Š” ๋ฐฉ๋ฒ•

๋งค๊ฐœ๋ณ€์ˆ˜ ์ˆ˜๋ฅผ ์ค„์ด๋Š” ๋ฐฉ๋ฒ•์œผ๋ก  ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์„ธ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค.

1. ์—ฌ๋Ÿฌ ๋ฉ”์„œ๋“œ๋กœ ์ชผ๊ฐœ๊ธฐ

์ชผ๊ฐœ์ง„ ๋ฉ”์„œ๋“œ๋ฅผ ๊ฐ๊ฐ ์›๋ž˜ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ๋ถ€๋ถ„์ง‘ํ•ฉ์„ ๋ฐ›๊ฒŒํ•˜์—ฌ ๋‚˜๋‰˜์–ด ๋ฐ›๋„๋ก ํ•œ๋‹ค. ์ž˜๋ชปํ•˜๋ฉด ๋ฉ”์„œ๋“œ๊ฐ€ ๋งŽ์•„์งˆ ์ˆ˜ ์žˆ์ง€๋งŒ, ์ง๊ต์„ฑ์„ ๋†’์—ฌ ์˜คํžˆ๋ ค ๋ฉ”์„œ๋“œ ์ˆ˜๋ฅผ ์ค„์ด๋Š” ํšจ๊ณผ๋ฅผ ๊ธฐ๋Œ€ํ•  ์ˆ˜ ์žˆ๋‹ค.

class Example {

    public static void main(String[] args) {
        List<String> list = List.of("a", "b", "c", "d", "e", "f", "g", "h", "i", "j");
        // 1. ์ง€์ •๋œ ๋ฒ”์œ„์˜ ๋ถ€๋ถ„๋ฆฌ์ŠคํŠธ์—์„œ ์ธ๋ฑ์Šค๋ฅผ ์ฐพ๋Š” ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์ž„์˜์˜ ๋ฉ”์„œ๋“œ(์กด์žฌํ•˜์ง€ ์•Š๋Š” ๋ฉ”์„œ๋“œ)
        list.indexOf("a", 0, 5);

        // 2. ์‹ค์ œ ๊ตฌํ˜„์€ ์•„๋ž˜์™€ ๊ฐ™์ด ๋‘ ๊ฐœ์˜ ๋ฉ”์„œ๋“œ๋กœ ๋‚˜๋‰˜์–ด์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
        list.subList(0, 5).indexOf("a");
    }
}

๋งŒ์•ฝ ์ง€์ •๋œ ๋ฒ”์œ„์˜ ๋ถ€๋ถ„๋ฆฌ์ŠคํŠธ์—์„œ ์ธ๋ฑ์Šค๋ฅผ ์ฐพ๋Š” ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰์„ ํ•˜๋‚˜์˜ ๋ฉ”์„œ๋“œ๋กœ ๊ตฌํ˜„ํ•˜๊ฒŒ๋˜๋ฉด ์ด 3๊ฐœ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ํ•˜์ง€๋งŒ List ์ธํ„ฐํŽ˜์ด์Šค์—์„œ๋Š” ์ด๋ฅผ ๋‘ ๊ฐœ์˜ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์™„๋ฒฝํ•˜๊ฒŒ ์œ„ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

2. ๋งค๊ฐœ๋ณ€์ˆ˜ ์—ฌ๋Ÿฌ ๊ฐœ๋ฅผ ๋ฌถ์–ด์ฃผ๋Š” ๋„์šฐ๋ฏธ ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค๊ธฐ

์ผ๋ฐ˜์ ์œผ๋กœ ์ด๋Ÿฐ ๋„์šฐ๋ฏธ ํด๋ž˜์Šค๋Š” ์ •์  ๋ฉค๋ฒ„ ํด๋ž˜์Šค๋กœ ๋‘๋Š”๋ฐ, ํŠนํžˆ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ํ•˜๋‚˜์˜ ๊ฐœ๋…์œผ๋กœ ๋ฌถ์„ ์ˆ˜ ์žˆ์„ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. ๋งค๊ฐœ๋ณ€์ˆ˜ ์ˆ˜ ์••์ถ• ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ˆœ์„œ๋ฅผ ๋ฐ”๊ฟ”์„œ ํ˜ธ์ถœํ•˜์ง€ ์•Š๋„๋ก ํ•ด์ฃผ๋Š” ์žฅ์ ๋„ ์žˆ๋‹ค.

3. 1,2๋ฅผ ํ˜ผํ•ฉํ•œ ๋ฐฉ๋ฒ•

๋นŒ๋” ํŒจํ„ด์„ ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ์— ์‘์šฉํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ๋ณด๋ฉด ๋˜๋Š”๋ฐ, ๋นŒ๋”ํŒจํ„ด๊ณผ ๊ฐ™์ด ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ๋งŽ๊ณ , ์ƒ๋žตํ•ด๋„ ๊ดœ์ฐฎ์„ ๋•Œ ์‚ฌ์šฉํ•˜๋ฉด ์ข‹๋‹ค. ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

  1. ๋ชจ๋“  ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ํ•˜๋‚˜๋กœ ์ถ”์ƒํ™”ํ•œ ๊ฐ์ฒด ์ •์˜

  2. ํด๋ผ์ด์–ธํŠธ์—์„œ ์ด ๊ฐ์ฒด์˜ setter ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•ด ํ•„์š”ํ•œ ๊ฐ’์„ ์„ค์ •

  3. ๊ฐ setter ๋ฉ”์„œ๋“œ๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜ ํ•˜๋‚˜ ํ˜น์€ ์„œ๋กœ ์—ฐ๊ด€๋œ ๋ช‡ ๊ฐœ๋งŒ ์„ค์ •

  4. ํ•„์š”ํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜ ์„ค์ • ํ›„ execute ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•ด ์•ž์„œ ์„ค์ •ํ•œ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ

  5. ์„ค์ • ์™„๋ฃŒ๋œ ๊ฐ์ฒด๋ฅผ ๋„˜๊ฒจ ์›ํ•˜๋Š” ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ

๊ทธ ์™ธ ์ฃผ์˜์‚ฌํ•ญ

๋งค๊ฐœ๋ณ€์ˆ˜ ํƒ€์ž…์œผ๋กœ ํด๋ž˜์Šค๋ณด๋‹ค๋Š” ์ธํ„ฐํŽ˜์ด์Šค ์‚ฌ์šฉ

๋งค๊ฐœ๋ณ€์ˆ˜ ํƒ€์ž…์œผ๋กœ ์ ํ•ฉํ•œ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์žˆ๋‹ค๋ฉด ๊ตฌํ˜„ ํด๋ž˜์Šค ๋ณด๋‹ค๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ง์ ‘ ์‚ฌ์šฉํ•ด ๋‹ค๋ฅธ ๊ตฌํ˜„์ฒด๋กœ ์‰ฝ๊ฒŒ ๊ต์ฒดํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.(HashMap x, Map o)

boolean๋ณด๋‹ค๋Š” ์›์†Œ 2๊ฐœ์งœ๋ฆฌ ์—ด๊ฑฐ ํƒ€์ž…์„ ์‚ฌ์šฉ

boolean์ด ๋” ๋ช…ํ™•ํ•  ๋•Œ๋ฅผ ์ œ์™ธํ•˜๊ณ ๋Š” ์›์†Œ 2๊ฐœ์งœ๋ฆฌ ์—ด๊ฑฐ ํƒ€์ž…์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋…์„ฑ ์ธก๋ฉด์—์„œ๋„, ํ™•์žฅ์„ฑ ์ธก๋ฉด์—์„œ๋„ ๋” ์ข‹๋‹ค.

Last updated