๊ด€๋ฆฌ ๋ฉ”๋‰ด

Unfazedโ—๏ธ๐ŸŽฏ

[Java] Collection์˜ add ๋ฉ”์„œ๋“œ์˜ boolean ํƒ€์ž… ๋ฐ˜ํ™˜๊ณผ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ๋ณธ๋ฌธ

๋ฌธ์ œ ํ•ด๊ฒฐ (PS)/์ž๋ฃŒ๊ตฌ์กฐ

[Java] Collection์˜ add ๋ฉ”์„œ๋“œ์˜ boolean ํƒ€์ž… ๋ฐ˜ํ™˜๊ณผ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ

9taetae9 2025. 2. 25. 11:42
728x90

Collection ์ธํ„ฐํŽ˜์ด์Šค์˜ add ๋ฉ”์„œ๋“œ๋Š” ์ปฌ๋ ‰์…˜์— ํŠน์ • ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•œ ๋ฉ”์„œ๋“œ์ด๋‹ค.

์ฃผ์š” ํŠน์ง•

  1. ๋ฐ˜ํ™˜ ๊ฐ’: ์ปฌ๋ ‰์…˜์ด ์ด ํ˜ธ์ถœ๋กœ ์ธํ•ด ๋ณ€๊ฒฝ๋˜๋ฉด true๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ , ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด false๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
  2. ์ค‘๋ณต ์ฒ˜๋ฆฌ: ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š” ์ปฌ๋ ‰์…˜(์˜ˆ: Set)์—์„œ ์ด๋ฏธ ํ•ด๋‹น ์š”์†Œ๊ฐ€ ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ false๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
  3. ์ œ์•ฝ ์‚ฌํ•ญ: ์ปฌ๋ ‰์…˜์€ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” ์š”์†Œ์— ์ œํ•œ์„ ๋‘˜ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
    • null ์š”์†Œ ๊ฑฐ๋ถ€
    • ํŠน์ • ํƒ€์ž…์˜ ์š”์†Œ๋งŒ ํ—ˆ์šฉ
  4. ์˜ˆ์™ธ ์ฒ˜๋ฆฌ: ์ปฌ๋ ‰์…˜์ด ์ด๋ฏธ ์š”์†Œ๋ฅผ ํฌํ•จํ•˜๋Š” ๊ฒฝ์šฐ๋ฅผ ์ œ์™ธํ•˜๊ณ  ๋‹ค๋ฅธ ์ด์œ ๋กœ ์š”์†Œ ์ถ”๊ฐ€๋ฅผ ๊ฑฐ๋ถ€ํ•˜๋Š” ๊ฒฝ์šฐ, false๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋Œ€์‹  ์˜ˆ์™ธ๋ฅผ ๋ฐœ์ƒ์‹œ์ผœ์•ผ ํ•œ๋‹ค.

boolean ํƒ€์ž…์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ์ด์œ 

  1. ์ปฌ๋ ‰์…˜ ๋ณ€๊ฒฝ ์—ฌ๋ถ€ ํ™•์ธ: ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ๋กœ ์ปฌ๋ ‰์…˜์ด ์‹ค์ œ๋กœ ๋ณ€๊ฒฝ๋˜์—ˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ์•Œ๋ ค์ค€๋‹ค.
  2. ์ค‘๋ณต ํ™•์ธ ๋ฉ”์ปค๋‹ˆ์ฆ˜: ํŠนํžˆ Set๊ณผ ๊ฐ™์€ ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š” ์ปฌ๋ ‰์…˜์—์„œ ์ค‘์š”ํ•˜๋‹ค. ์ด๋ฏธ ์กด์žฌํ•˜๋Š” ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ ค๊ณ  ํ•  ๋•Œ false๋ฅผ ๋ฐ˜ํ™˜ํ•จ์œผ๋กœ์จ ์ค‘๋ณต ์ถ”๊ฐ€ ์‹œ๋„๋ฅผ ๊ฐ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค.
  3. ๋‹คํ˜•์„ฑ ์ง€์›: ๋‹ค์–‘ํ•œ ์ปฌ๋ ‰์…˜ ๊ตฌํ˜„์ฒด๊ฐ€ ์š”์†Œ ์ถ”๊ฐ€ ์‹œ ์„œ๋กœ ๋‹ค๋ฅธ ๋™์ž‘(์ค‘๋ณต ํ—ˆ์šฉ ๋˜๋Š” ๊ฑฐ๋ถ€)์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋„๋ก ์ผ๊ด€๋œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

add ๋ฉ”์„œ๋“œ๋Š” ์ค‘๋ณต์ด ํ—ˆ์šฉ๋˜๋Š” ์ปฌ๋ ‰์…˜์—์„œ๋Š” ํ•ญ์ƒ true๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์—ฌ boolean ํƒ€์ž… ์‚ฌ์šฉ ์ด์œ ์— ์˜๋ฌธ์ด ์ƒ๊ธธ ์ˆ˜ ์žˆ์ง€๋งŒ,  ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š” ์ปฌ๋ ‰์…˜์˜ ๊ฒฝ์šฐ false๋ฅผ ๋ฐ˜ํ™˜ํ•  ์ˆ˜๋„ ์žˆ๋‹ค. 

 

Collection์˜ add ๋ฉ”์„œ๋“œ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ

Collection.add() ๋ฉ”์„œ๋“œ๋Š” ๋‹ค์–‘ํ•œ ์ƒํ™ฉ์—์„œ ์˜ˆ์™ธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค. ์ด๋Ÿฌํ•œ ์˜ˆ์™ธ๋“ค์€ ์ปฌ๋ ‰์…˜์˜ ๋ฌด๊ฒฐ์„ฑ์„ ์œ ์ง€ํ•˜๊ณ  ๊ฐœ๋ฐœ์ž์—๊ฒŒ ๋ช…ํ™•ํ•œ ์˜ค๋ฅ˜ ํ”ผ๋“œ๋ฐฑ์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด ์„ค๊ณ„๋˜์—ˆ๋‹ค.

์ฃผ์š” ์˜ˆ์™ธ ์œ ํ˜•

  1. UnsupportedOperationException
    • ๋ฐœ์ƒ ์ƒํ™ฉ: ์ปฌ๋ ‰์…˜์ด add ์—ฐ์‚ฐ์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ
    • ์˜ˆ์‹œ: Collections.unmodifiableCollection()์œผ๋กœ ์ƒ์„ฑํ•œ ์ฝ๊ธฐ ์ „์šฉ ์ปฌ๋ ‰์…˜
  2. ClassCastException
    • ๋ฐœ์ƒ ์ƒํ™ฉ: ์ง€์ •๋œ ์š”์†Œ์˜ ํด๋ž˜์Šค๊ฐ€ ์ปฌ๋ ‰์…˜์— ์ถ”๊ฐ€๋  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ
    • ์˜ˆ์‹œ: TreeSet<Integer>์— String ๊ฐ์ฒด๋ฅผ ์ถ”๊ฐ€ํ•˜๋ ค๊ณ  ํ•  ๋•Œ
  3. NullPointerException
    • ๋ฐœ์ƒ ์ƒํ™ฉ: null ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ ค ํ•  ๋•Œ ์ปฌ๋ ‰์…˜์ด null์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ
    • ์˜ˆ์‹œ: TreeSet์ด๋‚˜ ConcurrentHashMap์— null์„ ์ถ”๊ฐ€ํ•˜๋ ค๊ณ  ํ•  ๋•Œ
  4. IllegalArgumentException
    • ๋ฐœ์ƒ ์ƒํ™ฉ: ์š”์†Œ์˜ ํŠน์ • ์†์„ฑ์ด ์ปฌ๋ ‰์…˜์— ์ถ”๊ฐ€๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๋Š” ๊ฒฝ์šฐ
    • ์˜ˆ์‹œ: ์ปฌ๋ ‰์…˜์ด ์–‘์ˆ˜๋งŒ ํ—ˆ์šฉํ•˜๋Š”๋ฐ ์Œ์ˆ˜ ๊ฐ’์„ ์ถ”๊ฐ€ํ•˜๋ ค๊ณ  ํ•  ๋•Œ
  5. IllegalStateException
    • ๋ฐœ์ƒ ์ƒํ™ฉ: ์‚ฝ์ž… ์ œํ•œ์œผ๋กœ ์ธํ•ด ํ˜„์žฌ ์‹œ์ ์— ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ
    • ์˜ˆ์‹œ: ์šฉ๋Ÿ‰์ด ์ œํ•œ๋œ ์ปฌ๋ ‰์…˜์ด ์ด๋ฏธ ๊ฐ€๋“ ์ฐผ์„ ๋•Œ

์ •๋ฆฌ

  • ์ปฌ๋ ‰์…˜์€ ์š”์†Œ๊ฐ€ ์ด๋ฏธ ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ๋ฅผ ์ œ์™ธํ•˜๊ณ  ๋‹ค๋ฅธ ์ด์œ ๋กœ ์š”์†Œ ์ถ”๊ฐ€๋ฅผ ๊ฑฐ๋ถ€ํ•  ๋•Œ๋Š” ๋ฐ˜๋“œ์‹œ ์˜ˆ์™ธ๋ฅผ ๋ฐœ์ƒ์‹œ์ผœ์•ผ ํ•œ๋‹ค.(false๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฉด ์•ˆ ๋จ)
  • ํ•ด๋‹น ๊ทœ์น™์€ "ํ˜ธ์ถœ์ด ๋ฐ˜ํ™˜๋œ ํ›„์—๋Š” ์ปฌ๋ ‰์…˜์ด ํ•ญ์ƒ ์ง€์ •๋œ ์š”์†Œ๋ฅผ ํฌํ•จํ•œ๋‹ค"๋Š” ๋ถˆ๋ณ€์„ฑ์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ด๋‹ค.
728x90