Skip to content

Latest commit

ย 

History

History
295 lines (218 loc) ยท 16.8 KB

File metadata and controls

295 lines (218 loc) ยท 16.8 KB

java-stream-collection

Stream

  • ์ผ๋ จ์˜ ๋ฐ์ดํ„ฐ์˜ ํ๋ฆ„์„ ํ‘œ์ค€ํ™”๋œ ๋ฐฉ๋ฒ•์œผ๋กœ ์‰ฝ๊ฒŒ ๊ฐ€๊ณต, ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ํด๋ž˜์Šค
  • ์š”์†Œ๋“ค์˜ Stream์— ํ•จ์ˆ˜ํ˜• ์—ฐ์‚ฐ์„ ์ง€์›ํ•˜๋Š” ํด๋ž˜์Šค
  • Stream API๋Š” ์ด๋Ÿฌํ•œ ์ž‘์—…์„ ๊ฐ„ํŽธํ•˜๊ฒŒ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•  ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ๋ฅผ ํ†ตํ•ด ์ฒ˜๋ฆฌ ์†๋„๋ฅผ ๋†’์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋”ฐ๋ผ์„œ, Collection F/W๋ฅผ ํ†ตํ•ด ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์ฃผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • Stream API์˜ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ๋“ค์€ ๋Œ€๋ถ€๋ถ„ ๋žŒ๋‹ค๋ฅผ ํ•„์š”๋กœ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋žŒ๋‹ค๋ฅผ ์ดํ•ดํ•˜๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Stream ์—ฐ์‚ฐ

  • ๊ฐ ์—ฐ์‚ฐ์˜ ์—ฐ๊ฒฐ์„ ํ†ตํ•ด ํŒŒ์ดํ”„๋ผ์ธ์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  • ํŒŒ์ดํ”„๋ผ์ธ์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์€ ์ŠคํŠธ๋ฆผ ๋Œ€์ƒ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ๋‹ค์–‘ํ•œ ์—ฐ์‚ฐ์„ ์กฐํ•ฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
  • ์ŠคํŠธ๋ฆผ์„ ์ด์šฉํ•œ ์—ฐ์‚ฐ ์ฒ˜๋ฆฌ๋Š” ์ŠคํŠธ๋ฆผ ๊ฐ์ฒด์˜ ์ƒ์„ฑ๋ถ€ํ„ฐ ์ค‘๊ฐ„ ์—ฐ์‚ฐ, ๊ทธ๋ฆฌ๊ณ  ์ตœ์ข… ์—ฐ์‚ฐ ๋‹จ๊ณ„๋กœ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ๋‹ค.
  • ์ŠคํŠธ๋ฆผ ๊ฐ์ฒด๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๋‹ค์–‘ํ•œ ์—ฐ์‚ฐ์„ ์ดํ•ดํ•˜๊ณ  ์—ฐ์‚ฐ์— ํ•„์š”ํ•œ ๋žŒ๋‹คํ‘œํ˜„์‹์„ ์ดํ•ดํ•˜๊ณ  ์ ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

Stream Flow

Image

Stream ์ƒ์„ฑ

  • ๋ฐ์ดํ„ฐ์˜ ์ปฌ๋ ‰์…˜(์ง‘ํ•ฉ)์„ Stream์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค.
  • Stream API๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ตœ์ดˆ 1๋ฒˆ ์ˆ˜ํ–‰๋˜์–ด์•ผ ํ•˜๋ฉฐ, ์ƒ์„ฑ ๋‹จ๊ณ„์—์„œ๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ๊บผ๋ฒˆ์— ๋ถˆ๋Ÿฌ์˜ค์ง€ ์•Š๊ณ  ํ•„์š”ํ• ๋•Œ๋งŒ ๋ถˆ๋Ÿฌ์˜ต๋‹ˆ๋‹ค.
    • ์ด๋ฅผ ํ†ตํ•ด ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์„ ์ตœ์ ํ™”ํ•˜๊ณ  ํšจ์œจ์„ฑ์ด ์ฆ๋Œ€๋ฉ๋‹ˆ๋‹ค.

๊ฐ€๊ณต(์ค‘๊ฐ„ ์—ฐ์‚ฐ)

  • ๊ฐ€๊ณต(์ค‘๊ฐ„์—ฐ์‚ฐ): ์†Œ์Šค์˜ ๋ฐ์ดํ„ฐ ์ง‘ํ•ฉ์„ ์›ํ•˜๋Š” ํ˜•ํƒœ๋กœ ๊ฐ€๊ณตํ•˜๋Š” ๊ฒƒ
    • filter, map๊ณผ ๊ฐ™์€ ์—ฐ์‚ฐ์œผ๋กœ Stream์„ ๋ฐ˜ํ™˜
    • ์ค‘๊ฐ„ ์—ฐ์‚ฐ์€ ์—ฐ์†์—์„œ ํ˜ธ์ถœํ•˜๋Š” ๋ฉ”์†Œ๋“œ ์ฒด์ด๋‹์œผ๋กœ ๊ตฌํ˜„์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
    • ์ตœ์ข… ์—ฐ์‚ฐ์ด ์‹คํ–‰๋˜์–ด์•ผ ์ค‘๊ฐ„์—ฐ์‚ฐ์ด ์ฒ˜๋ฆฌ๋˜๋ฏ€๋กœ ์ค‘๊ฐ„์—ฐ์‚ฐ๋“ค๋กœ๋งŒ ๊ตฌ์„ฑ๋œ ๋ฉ”์†Œ๋“œ ์ฒด์ธ์€ ์‹คํ–‰๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. (Lazy Evaluation)
    • Lazy Evaluation: ์ตœ์ข… ์—ฐ์‚ฐ์„ ํ˜ธ์ถœํ•˜๊ธฐ ์ „๊นŒ์ง€ ์ค‘๊ฐ„ ์—ฐ์‚ฐ์„ ์ง€์—ฐ์‹œํ‚ค๋Š” ํ–‰์œ„

๋งคํ•‘(Map)

  • ์ŠคํŠธ๋ฆผ ๋งคํ•‘(map) ์—ฐ์‚ฐ์€ ์ŠคํŠธ๋ฆผ์ด ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฅธ ํ˜•ํƒœ์˜ ๋ฐ์ดํ„ฐ๋กœ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.
  • ๋งคํ•‘ ์—ฐ์‚ฐ์˜ ๋ฉ”์†Œ๋“œ๋Š” map(), mapToInt(), mapToDouble(), mapToLong()์ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ฃผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”์†Œ๋“œ๋Š” map() ๋ฉ”์†Œ๋“œ์ด๋ฉฐ ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” Function ํ•จ์ˆ˜ํ˜• ์ธํ„ฐํŽ˜์ด์Šค ์ž…๋‹ˆ๋‹ค.
  • double, int, long ๊ธฐ๋ณธํ˜• ๋ฐ์ดํ„ฐ ํƒ€์ž…์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๋ฉ”์†Œ๋“œ๋“ค์€ ๋งคํ•‘๋œ ๊ฐ’์˜ ๊ฒฐ๊ณผ๊ฐ€ ๊ธฐ๋ณธํ˜• ๋ฐ์ดํ„ฐ ํƒ€์ž…์ผ ๊ฒฝ์šฐ ์ ์šฉํ•˜์—ฌ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๊ฐ€๊ณต์˜ ์ข…๋ฅ˜

  • filter: ํ•„ํ„ฐ ์ฒ˜๋ฆฌ (์กฐ๊ฑด๋ฌธ์„ ํ†ตํ•œ ๋ฐ์ดํ„ฐ ์„ ๋ณ„)
  • map: ๋ฐ์ดํ„ฐ ๋ณ€ํ™˜
  • sorted: ์ •๋ ฌ
  • peek: ๊ฐ€๊ณต๋œ ๋ฐ์ดํ„ฐ๋ฅผ ํŒŒ์•…ํ•˜๊ธฐ ์œ„ํ•œ ์šฉ๋„
  • disctinct: ์ค‘๋ณต ์ œ๊ฑฐ
  • limit: ๊ฐœ์ˆ˜ ์ œํ•œ

์ตœ์ข… ์—ฐ์‚ฐ

  • ์ตœ์ข…์—ฐ์‚ฐ: Stream์— ๋Œ€ํ•œ ์ตœ์ข… ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ. (์ตœ์ข…์ ์ธ ๋ชฉ์ ๋ฌผ์„ ์–ป๋Š” ์ฒ˜๋ฆฌ๊ณผ์ •)
    • forEach, collect์™€ ๊ฐ™์€ ์—ฐ์‚ฐ์œผ๋กœ void๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ฑฐ๋‚˜ ์ปฌ๋ ‰์…˜ ํƒ€์ž…์„ ๋ฐ˜ํ™˜
    • ์ŠคํŠธ๋ฆผ์ด ๊ด€๋ฆฌํ•˜๋Š” ์ „์ฒด ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์ˆœํšŒ ์ž‘์—…์€ ์ตœ์ข… ์—ฐ์‚ฐ์ธ forEach() ๋ฉ”์†Œ๋“œ๋ฅผ ์ด์šฉํ•ฉ๋‹ˆ๋‹ค.
    • collect() ๋ฉ”์†Œ๋“œ๋Š” ์ŠคํŠธ๋ฆผ ์ฒ˜๋ฆฌ ์ดํ›„ ์ฒ˜๋ฆฌ๋œ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด Collection ๊ฐ์ฒด๋กœ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฉ”์†Œ๋“œ ์ž…๋‹ˆ๋‹ค.
    • ์ŠคํŠธ๋ฆผ์˜ ์ตœ์ข… ์—ฐ์‚ฐ์€ forEach()์™€ ๊ฐ™์€ ์ŠคํŠธ๋ฆผ ์ฒ˜๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ”๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ์—ฐ์‚ฐ์ด ์žˆ๊ณ , ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ๋‘ ์†Œ๋ชจํ•œ ์ดํ›„์— ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋Š” count()์™€ ๊ฐ™์€ ์—ฐ์‚ฐ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
    • ์ด ์™ธ์—๋„ ํŠน์ • ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๋Š” allMatch(), anyMatch() ๋“ฑ๊ณผ ๊ฐ™์€ ๋‹ค์–‘ํ•œ ๋ฉ”์†Œ๋“œ๋“ค์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์ตœ์ข… ์—ฐ์‚ฐ ์ข…๋ฅ˜

  • forEach(): stream์˜ ๊ฐ ์š”์†Œ๋ฅผ ์ˆœํšŒํ•˜๋ฉด์„œ ์ถœ๋ ฅ ๋“ฑ์˜ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • reduce(): stream์˜ ์š”์†Œ๋ฅผ ์ค„์—ฌ๋‚˜๊ฐ€๋ฉด์„œ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  • findFirst(), findAny(): ํŠน์ • ์กฐ๊ฑด์— ๋งž๋Š” ์š”์†Œ๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • anyMatch(), allMatch(), noneMatch(): ์กฐ๊ฑด์— ๋งž๋Š”์ง€ ํ™•์ธ์„ ์œ„ํ•ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • count(), min(), max(), sum(), average(): ์š”์†Œ์˜ ๊ฐœ์ˆ˜, ์ตœ์†Œ(๋Œ€)๊ฐ’, ํ•ฉ๊ณ„, ํ‰๊ท ์„ ์œ„ํ•ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • collect(): stream์˜ ์š”์†Œ๋ฅผ ์ˆ˜์ง‘ํ•˜์—ฌ ์›ํ•˜๋Š” ํ˜•ํƒœ๋กœ ๋ณ€ํ™˜ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
    • toList(), toSet(), toCollection(), toArray(), toMap()

Stream ํŠน์ง•

  • ์„ ์–ธ์ ์œผ๋กœ ์ฝ”๋”ฉ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
  • ์—ฐ์†์ ์œผ๋กœ ํ•„ํ„ฐ๋ง, ๋งคํ•‘, ์ •๋ ฌ์„ ์ฒด์ด๋‹์œผ๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๊ฐ„๊ฒฐํ•˜๊ณ  ๋ช…ํ™•ํ•œ ์ฝ”๋“œ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์–ด์„œ ์ฝ”๋“œ์˜ ์œ ์ง€๋ณด์ˆ˜์„ฑ๊ณผ ๊ฐ€๋…์„ฑ์ด ํ–ฅ์ƒ๋ฉ๋‹ˆ๋‹ค.
  • ๋ณ‘๋ ฌ์ฒ˜๋ฆฌ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. (๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ๋กœ ๋ณ‘๋ ฌ์ฒ˜๋ฆฌ ํ›„ ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅด๊ณ  ์‰ฝ๊ฒŒ ์ฒ˜๋ฆฌ) (parallel(), parallelStream())

Collection

Java Collection Framework (JCF)

  • ์ž๋ฃŒ ๊ตฌ์กฐ(Data Structure) ์ข…๋ฅ˜์˜ ํ˜•ํƒœ๋“ค์„ ์ž๋ฐ” ํด๋ž˜์Šค๋กœ ๊ตฌํ˜„ํ•œ ๋ชจ์Œ์ง‘
  • ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์™€ ์ฒ˜๋ฆฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ตฌ์กฐํ™”ํ•˜์—ฌ ํด๋ž˜์Šค๋กœ ๊ตฌํ˜„ํ•ด๋‘” ๊ฒƒ

Collection Framwork์˜ ์žฅ์ 

  1. ์ธํ„ฐํŽ˜์ด์Šค์™€ ๋‹คํ˜•์„ฑ์„ ์ด์šฉํ•œ ๊ฐ์ฒด์ง€ํ–ฅ์  ์„ค๊ณ„๋ฅผ ํ†ตํ•ด ํ‘œ์ค€ํ™”๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
  2. ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ๋ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๊ณ ์„ฑ๋Šฅ ๊ตฌํ˜„์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  3. ๊ด€๋ จ ์—†๋Š” API ๊ฐ„์˜ ์ƒํ˜ธ ์šด์šฉ์„ฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  4. ์ด๋ฏธ ๊ตฌํ˜„๋˜์–ด ์žˆ๋Š” API๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋˜๊ธฐ์—, ์ƒˆ๋กœ์šด API๋ฅผ ์ตํžˆ๊ณ  ์„ค๊ณ„ํ•˜๋Š” ์‹œ๊ฐ„์ด ์ค„์–ด๋“ญ๋‹ˆ๋‹ค.
  5. ์†Œํ”„ํŠธ์›จ์–ด ์žฌ์‚ฌ์šฉ์„ ์ด‰์ง„ํ•ฉ๋‹ˆ๋‹ค.

Collection Framework

Image
  • Collection ์ธํ„ฐํŽ˜์ด์Šค
    • List, Set, Queue ์ธํ„ฐํŽ˜์ด์Šค์˜ ๊ตฌํ˜„์ฒด ์กด์žฌ
  • Map ์ธํ„ฐํŽ˜์ด์Šค
    • Collection๊ณผ๋Š” ๋ณ„๊ฐœ๋กœ Map ์ธํ„ฐํŽ˜์ด์Šค์˜ ๊ตฌํ˜„์ฒด ์กด์žฌ

Iterable Interface

  1. ์ปฌ๋ ‰์…˜ ์ธํ„ฐํŽ˜์ด์Šค๋“ค์˜ ๊ฐ€์žฅ ์ตœ์ƒ์˜ ์ธํ„ฐํŽ˜์ด์Šค
  2. ์ปฌ๋ ‰์…˜๋“ค์„ ๋ฐฐ์šฐ๋‹ค ๋ณด๋ฉด ์ž๋ฃŒ๋“ค์„ ์ˆœํšŒํ• ๋•Œ ์ดํ„ฐ๋ ˆ์ดํ„ฐ ๊ฐ์ฒด๋ฅผ ๋‹ค๋ค„๋ณด๊ฒŒ ๋˜๋Š”๋ฐ, ์ดํ„ฐ๋ ˆ์ดํ„ฐ ๊ฐ์ฒด๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค
๋ฉ”์„œ๋“œ ์„ค๋ช…
default void forEach(Consumer<? super T> action) ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ „์šฉ ๋ฃจํ”„ ๋ฉ”์„œ๋“œ
Iterator iterator() ์ปฌ๋ ‰์…˜์—์„œ ์ดํ„ฐ๋ ˆ์ดํ„ฐ ๊ตฌํ˜„
default Spliterator splierator() ํŒŒ์ดํ”„๋ผ์ด๋‹ ๊ด€๋ จ ๋ฉ”์„œ๋“œ

Collection Interface

  • List, Set, Queue๋ฅผ ์ƒ์†ํ•˜๋Š” ์ƒ์œ„ ์ปฌ๋ ‰์…˜ ํƒ€์ž…
  • ์—…์บ์ŠคํŒ…์œผ๋กœ ๋‹ค์–‘ํ•œ ์ข…๋ฅ˜์˜ ์ปฌ๋ ‰์…˜ ์ž๋ฃŒํ˜•์„ ๋ฐ›์•„ ์ž๋ฃŒ๋ฅผ crudํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
Image
๋ฉ”์„œ๋“œ ์„ค๋ช…
boolean add(Object o), boolean addAll(Collection c) Collection์— ๊ฐ์ฒด ์ถ”๊ฐ€
boolean contains(Object o), boolean containsAll(Collection c) Collection์— ๊ฐ์ฒด๋“ค์ด ํฌํ•จ๋˜์–ด์žˆ๋Š”์ง€ check
boolean remove(Object o), boolean removeAll(Collction c) Collection์—์„œ ๊ฐ์ฒด ์‚ญ์ œ
boolean retainAll(Collection c) Collection์— ์ง€์ •ํ•œ ๊ฐ์ฒด๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ๊ฐ์ฒด ์‚ญ์ œ
void clear() Collection์˜ ๋ชจ๋“  ๊ฐ์ฒด๋ฅผ ์‚ญ์ œ
boolean equals(Object o) ๋™์ผํ•œ Collection์ธ์ง€ ๋น„๊ต
int hashCode() Collection์˜ hash code๋ฅผ ๋ฐ˜ํ™˜
boolean isEmpty() Collection์ด ๋น„์–ด์žˆ๋Š”์ง€ ํ™•์ธ
Iterator iterator() Collection์˜ iterator๋ฅผ ์–ป์–ด์„œ ๋ฐ˜ํ™˜
int size() Collection์— ์ €์žฅ๋œ ๊ฐ์ฒด์˜ ๊ฐœ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜

ArrayList

  • ๋ฐฐ์—ด์„ ์ด์šฉํ•˜์—ฌ ๋งŒ๋“  ๋ฆฌ์ŠคํŠธ
  • ๋ฐ์ดํ„ฐ์˜ ์ €์žฅ์ˆœ์„œ๊ฐ€ ์œ ์ง€๋˜๊ณ  ์ค‘๋ณต์„ ํ—ˆ์šฉ
  • ๋ฐ์ดํ„ฐ๋Ÿ‰์— ๋”ฐ๋ผ ๊ณต๊ฐ„(capacity) ์ž๋™ ์„ค์ •
  • ๋‹จ๋ฐฉํ–ฅ ํฌ์ธํ„ฐ ๊ตฌ์กฐ๋กœ ์ž๋ฃŒ์— ๋Œ€ํ•œ ์ˆœ์ฐจ์ ์ธ ์ ‘๊ทผ์— ๊ฐ•์ ์ด ์žˆ์–ด ์กฐํšŒ๊ฐ€ ๋น ๋ฆ…๋‹ˆ๋‹ค.
    • ํ•˜์ง€๋งŒ, ์‚ฝ์ž…/์‚ญ์ œ๋Š” ๋А๋ฆฌ๋ฉฐ, ์ˆœ์ฐจ์ ์œผ๋กœ ์ถ”๊ฐ€/์‚ญ์ œํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ๊ฐ€์žฅ ๋น ๋ฆ…๋‹ˆ๋‹ค.

LinkedList (์‚ฝ์ž…/์‚ญ์ œ ์„ฑ๋Šฅ ์šฐ์ˆ˜)

  • ๋…ธ๋“œ๋ฅผ ์—ฐ๊ฒฐํ•˜์—ฌ ๋ฆฌ์ŠคํŠธ์ฒ˜๋Ÿผ ๋งŒ๋“  ์ปฌ๋ ‰์…˜ (๋ฐฐ์—ด X)
  • ๋ฐ์ดํ„ฐ์˜ ์ค‘๊ฐ„ ์‚ฝ์ž…, ์‚ญ์ œ๊ฐ€ ๋นˆ๋ฒˆํ•  ๊ฒฝ์šฐ ๋น ๋ฅธ ์„ฑ๋Šฅ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.
  • ์ž„์˜ ์š”์†Œ์— ๋Œ€ํ•œ ์กฐํšŒ ์„ฑ๋Šฅ์„ ์ข‹์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ์ž๋ฐ”์˜ LinkedList๋Š” ์–‘๋ฐฉํ–ฅ ํฌ์ธํ„ฐ ๊ตฌ์กฐ๋กœ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค.
  • LinkedList๋Š” ๋ฆฌ์ŠคํŠธ ์šฉ๋„ ์ด์™ธ์—๋„ ์Šคํƒ, ํ, ํŠธ๋ฆฌ ๋“ฑ์˜ ์ž๋ฃŒ๊ตฌ์กฐ์˜ ๊ทผ๊ฐ„์ด ๋ฉ๋‹ˆ๋‹ค.

Queue

  1. FIFO(First-In-First-out) ๊ตฌ์กฐ
  2. ์ฒ˜์Œ ๋“ค์–ด์˜จ ์›์†Œ๊ฐ€ ๊ฐ€์žฅ ๋จผ์ € ๋‚˜๊ฐ‘๋‹ˆ๋‹ค.
  3. ์ž๋ฐ”์—์„œ Queue๋Š” ์ธํ„ฐํŽ˜์ด์Šค๊ณ , ํ•„์š”์— ๋”ฐ๋ผ ํ ์ปฌ๋ ‰์…˜์„ ๊ณจ๋ผ์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋ฉ”์„œ๋“œ ์„ค๋ช…
boolean add(Object o) Queue์— ๊ฐ์ฒด ์ถ”๊ฐ€ (์ €์žฅ๊ณต๊ฐ„ ๋ถ€์กฑ์‹œ, IllegalStateException ๋ฐœ์ƒ)
Object remove() Queue์—์„œ ๊ฐ์ฒด ๋ฐ˜ํ™˜ (์—†์„ ๊ฒฝ์šฐ, NoSuchElementException ๋ฐœ์ƒ)
Object element() ์‚ญ์ œ ์—†์ด ์š”์†Œ๋ฅผ ์ฝ์–ด์˜ต๋‹ˆ๋‹ค.(์—†์„ ๊ฒฝ์šฐ, NoSuchElementException)
boolean offer() Queue์— ๊ฐ์ฒด๋ฅผ ์ €์žฅ
Object poll() Queue์—์„œ ๊ฐ์ฒด๋ฅผ ๊บผ๋‚ด์„œ ๋ฐ˜ํ™˜ (์—†์„ ๊ฒฝ์šฐ null ๋ฐ˜ํ™˜)
Object peek() Queue์—์„œ ์‚ญ์ œ ์—†์ด ์š”์†Œ๋ฅผ ์ฝ์–ด์˜ต๋‹ˆ๋‹ค. (์—†์„ ๊ฒฝ์šฐ null ๋ฐ˜ํ™˜)

Set

Image
  1. ๋ฐ์ดํ„ฐ์˜ ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๊ณ  ์ˆœ์„œ๋ฅผ ์œ ์ง€ํ•˜์ง€ ์•Š๋Š” ๋ฐ์ดํ„ฐ์˜ ์ง‘ํ•ฉ ๋ฆฌ์ŠคํŠธ
  2. ์ˆœ์„œ ์ž์ฒด๊ฐ€ ์—†์œผ๋ฏ€๋กœ ์ธ๋ฑ์Šค๋กœ ๊ฐ์ฒด๋ฅผ ๊ฒ€์ƒ‰ํ•ด์„œ ๊ฐ€์ ธ์˜ค๋Š” get(index) ๋ฉ”์„œ๋“œ๋„ ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  3. ์ค‘๋ณต ์ €์žฅ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๊ธฐ์— ์‹ฌ์ง€์–ด null๋„ ํ•˜๋‚˜๋งŒ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋ฉ”์„œ๋“œ ์„ค๋ช…
boolean add(E e) ์ฃผ์–ด์ง„ ๊ฐ์ฒด๋ฅผ ์ €์žฅ ํ›„ true, false ๋ฆฌํ„ด
boolean contains(Object o) ์ฃผ์–ด์ง„ ๊ฐ์ฒด๊ฐ€ ์ €์žฅ๋˜์—ˆ๋Š”์ง€์˜ ์—ฌ๋ถ€๋ฅผ ๋ฆฌํ„ด
Iterator iterator() ์ €์žฅ๋œ ๊ฐ์ฒด๋ฅผ ํ•œ๋ฒˆ์”ฉ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐ˜๋ณต์ž๋ฅผ ๋ฆฌํ„ด
isEmpty() ์ปฌ๋ ‰์…˜์ด ๋น„์—ˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ๊ฒ€์‚ฌ
int Size() ์ €์žฅ๋˜์–ด ์žˆ๋Š” ์ „์ฒด ๊ฐ์ฒด ์ˆ˜๋ฅผ ๋ฆฌํ„ด
void clear() ์ €์žฅ๋œ ๋ชจ๋“  ๊ฐ์ฒด๋ฅผ ์‚ญ์ œ
boolean remove(Object o) ์ฃผ์–ด์ง„ ๊ฐ์ฒด๋ฅผ ์‚ญ์ œ

HashSet

  1. ๋ฐฐ์—ด๊ณผ ์—ฐ๊ฒฐ๋…ธ๋“œ๋ฅผ ๊ฒฐํ•ฉํ•œ ์ž๋ฃŒ๊ตฌ์กฐ ํ˜•ํƒœ
  2. ๊ฐ€์žฅ ๋น ๋ฅธ ์ž„์˜ ๊ฒ€์ƒ‰ ์ ‘๊ทผ ์†๋„๋ฅผ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.
  3. ์ถ”๊ฐ€, ์‚ญ์ œ, ๊ฒ€์ƒ‰, ์ ‘๊ทผ์„ฑ์ด ๋ชจ๋‘ ๋›ฐ์–ด๋‚ฉ๋‹ˆ๋‹ค.
  4. ๋Œ€์‹  ์ˆœ์„œ๋ฅผ ์ „ํ˜€ ์˜ˆ์ธกํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

LinkedHashSet

  1. ์ˆœ์„œ๋ฅผ ๊ฐ€์ง€๋Š” Set ์ž๋ฃŒ๊ตฌ์กฐ
  2. ์ถ”๊ฐ€๋œ ์ˆœ์„œ ๋˜๋Š” ๊ฐ€์žฅ ์ตœ๊ทผ์— ์ ‘๊ทผํ•œ ์ˆœ์„œ๋Œ€๋กœ ์ ‘๊ทผ ๊ฐ€๋Šฅ
  3. ๋งŒ์ผ ์ค‘๋ณต์„ ์ œ๊ฑฐํ•˜๋Š” ๋™์‹œ์— ์ €์žฅํ•œ ์ˆœ์„œ๋ฅผ ์œ ์ง€ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด, HashSet ๋Œ€์‹  LinkedHashSet์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

TreeSet

  1. ์ด์ง„ ๊ฒ€์ƒ‰ ํŠธ๋ฆฌ (binary search tree) ์ž๋ฃŒ๊ตฌ์กฐ ํ˜•ํƒœ๋กœ ๋ฐ์ดํ„ฐ ์ €์žฅ
  2. ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๊ณ , ์ˆœ์„œ๋ฅผ ๊ฐ€์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  3. ๋Œ€์‹  ๋ฐ์ดํ„ฐ๋ฅผ ์ •๋ ฌํ•˜์—ฌ ์ €์žฅํ•˜๊ณ  ์žˆ๋‹ค๋Š” ํŠน์ง•์ด ์žˆ์Šต๋‹ˆ๋‹ค.
  4. ์ •๋ ฌ, ๊ฒ€์ƒ‰, ๋ฒ”์œ„ ๊ฒ€์ƒ‰์— ๋†’์€ ์„ฑ๋Šฅ์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค.

Map

Image
  • key์™€ value ์Œ์œผ๋กœ ์—ฐ๊ด€์ง€์–ด ์ด๋ฃจ์–ด์ง„ ๋ฐ์ดํ„ฐ์˜ ์ง‘ํ•ฉ
  • value๋Š” ์ค‘๋ณตํ•ด์„œ ์ €์žฅ๋  ์ˆ˜ ์žˆ์ง€๋งŒ, key๋Š” ๊ณ ์œ ํ•œ ๊ฐ’์ด์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ๊ธฐ์กด์— ๋ฐ์ดํ„ฐ์™€ ์ค‘๋ณต๋œ ํ‚ค์™€ ๊ฐ’์„ ์ €์žฅํ•˜๋ฉด ๊ธฐ์กด์˜ ๊ฐ’์€ ์—†์–ด์ง€๊ณ , ๋งˆ์ง€๋ง‰์— ์ €์žฅ๋œ ๊ฐ’๋งŒ ๋‚จ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
  • ์ €์žฅ ์ˆœ์„œ๊ฐ€ ์œ ์ง€๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
์ถ”์ƒ ๋ฉ”์„œ๋“œ ์„ค๋ช…
void clear() Map์˜ ๋ชจ๋“  ๊ฐ์ฒด๋ฅผ ์‚ญ์ œ
boolean containsKey() ์ง€์ •๋œ key ๊ฐ์ฒด์™€ ์ผ์น˜ํ•˜๋Š” ๊ฐ์ฒด๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธ
boolean containsValue() ์ง€์ •๋œ value ๊ฐ์ฒด์™€ ์ผ์น˜ํ•˜๋Š” ๊ฐ์ฒด๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธ
Set entySet() Map์— ์ €์žฅ๋œ key-value ์Œ์„ Map.Entry ํƒ€์ž…์˜ ๊ฐ์ฒด๋กœ ์ €์žฅํ•œ Set์„ ๋ฐ˜ํ™˜
boolean equals() ๋™์ผํ•œ Map์ธ์ง€๋ฅผ ๋น„๊ต
Object get() ์ง€์ •ํ•œ key ๊ฐ์ฒด์— ๋Œ€์‘ํ•˜๋Š” value ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜
int hashCode() ํ•ด์‹œ ์ฝ”๋“œ๋ฅผ ๋ฐ˜ํ™˜
boolean isEmpty() Map์ด ๋น„์–ด์žˆ๋Š”์ง€ ํ™•์ธ
Set keySet() Map์— ์ €์žฅ๋œ ๋ชจ๋“  key ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜
Object put() Map์— ์ €์žฅ๋œ key ๊ฐ์ฒด์™€ value ๊ฐ์ฒด๋ฅผ ์—ฐ๊ฒฐํ•˜์—ฌ ์ €์žฅ
putAll(Map t) ์ง€์ •๋œ key ๊ฐ์ฒด์™€ ์ผ์น˜ํ•˜๋Š” key-value ์Œ์„ ์ถ”๊ฐ€
remove() ์ง€์ •๋œ key ๊ฐ์ฒด์™€ ์ผ์น˜ํ•˜๋Š” key-value ๊ฐ์ฒด๋ฅผ ์‚ญ์ œ
int size() Map์— ์ €์žฅ๋œ key-value ์Œ์˜ ๊ฐœ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜

Map.Entry ์ธํ„ฐํŽ˜์ด์Šค

  • Map.Entry ์ธํ„ฐํŽ˜์ด์Šค๋Š” Map ์ธํ„ฐํŽ˜์ด์Šค ์•ˆ์— ์žˆ๋Š” ๋‚ด๋ถ€ ์ธํ„ฐํŽ˜์ด์Šค์ž…๋‹ˆ๋‹ค.
  • Map์— ์ €์žฅ๋˜๋Š” key-value ์Œ์˜ Node ๋‚ด๋ถ€ ํด๋ž˜์Šค๊ฐ€ ์ด๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

HashMap

  • HashTable์„ ๋ณด์™„ํ•œ ์ปฌ๋ ‰์…˜
  • ๋ฐฐ์—ด๊ณผ ์—ฐ๊ฒฐ์ด ๊ฒฐํ•ฉ๋œ Hashing ํ˜•ํƒœ๋กœ, key, value๋ฅผ ๋ฌถ์–ด ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ๋กœ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
  • ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๊ณ  ์ˆœ์„œ๋ฅผ ๋ณด์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • key, value ๊ฐ’์œผ๋กœ null์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ์ถ”๊ฐ€, ์‚ญ์ œ, ๊ฒ€์ƒ‰, ์ ‘๊ทผ์„ฑ์ด ๋ชจ๋‘ ๋›ฐ์–ด๋‚ฉ๋‹ˆ๋‹ค.
  • ๋น„๋™๊ธฐ๋กœ ์ž‘๋™ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ€ํ‹ฐ์“ฐ๋ ˆ๋“œํ™˜๊ฒฝ์—์„œ๋Š” ์–ด์šธ๋ฆฌ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

LinkedHashMap

  • HashMap์„ ์ƒ์†ํ•˜๊ณ , Entry๋“ค์ด ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๋ฅผ ๊ตฌ์„ฑํ•˜์—ฌ ๋ฐ์ดํ„ฐ์˜ ์ˆœ์„œ๋ฅผ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.
  • ์ผ๋ฐ˜์ ์ธ Map ์ž๋ฃŒ๊ตฌ์กฐ๋Š” ์ˆœ์„œ๋ฅผ ๊ฐ€์ง€์ง€ ์•Š์ง€๋งŒ, LinkedHashMap์€ ๋“ค์–ด์˜จ ์ˆœ์„œ๋Œ€๋กœ ์ˆœ์„œ๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค.

TreeMap

  • ์ด์ง„ ๊ฒ€์ƒ‰ ํŠธ๋ฆฌ์˜ ํ˜•ํƒœ๋กœ ํ‚ค์™€ ๊ฐ’์˜ ์Œ์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅ (TreeSet๊ณผ ๋™์ผํ•œ ์›๋ฆฌ)
  • TreeMap์€ SortedMap ์ธํ„ฐํŽ˜์ด์Šค์˜ ๊ตฌํ˜„์ฒด๋กœ์„œ, Key๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌ๋˜๋Š” ํŠน์ง•์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ •๋ ฌ๋œ ์ˆœ์„œ๋กœ key/value ๊ฐ’์„ ์ €์žฅํ•˜๋ฏ€๋กœ ์กฐํšŒ ์„ฑ๋Šฅ์ด ๋›ฐ์–ด๋‚˜์ง€๋งŒ, ์ €์žฅ๊ณผ ๋™์‹œ์— ์ •๋ ฌ ๊ณผ์ •์ด ์ผ์–ด๋‚˜๋ฏ€๋กœ ์ €์žฅ ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค.

HashTable

  • ์ž๋ฐ” ์ดˆ๊ธฐ๋ฒ„์ „์— ๋‚˜์˜จ ํด๋ž˜์Šค
  • Key๋ฅผ ํŠน์ • ํ•ด์‹œ ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ํ•ด์‹ฑํ•œ ํ›„ ๋‚˜์˜จ ๊ฒฐ๊ณผ๋ฅผ ๋ฐฐ์—ด์˜ ์ธ๋ฑ์Šค๋กœ ์‚ฌ์šฉํ•˜์—ฌ Value๋ฅผ ์ฐพ๋Š” ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘๋ฉ๋‹ˆ๋‹ค.
  • HashMap๋ณด๋‹ค๋Š” ๋А๋ฆฌ์ง€๋งŒ ๋™๊ธฐํ™”๊ฐ€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ง€์›๋ฉ๋‹ˆ๋‹ค.
  • ํ‚ค์™€ ๊ฐ’์œผ๋กœ null์ด ํ—ˆ์šฉ

Map Method (compute(), computeIfAbsent(), putIfAbsent(), computeIfPresent())

Compute()

Image

Key์˜ ์กด์žฌ ์œ ๋ฌด์™€ ์ƒ๊ด€์—†์ด ๋žŒ๋‹ค์‹์„ ์ˆ˜ํ–‰

  1. Key์— ๊ฐ’์ด ์กด์žฌํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ โ†’ null
  2. Key์— ๊ฐ’์ด ์กด์žฌ + ๋žŒ๋‹ค์‹์˜ ๊ฒฐ๊ณผ๊ฐ€ null โ†’ ํ•ด๋‹น Key๋ฅผ ์‚ญ์ œ
  3. Key์— ๊ฐ’์ด ์กด์žฌ + ๋žŒ๋‹ค์‹์˜ ๊ฒฐ๊ณผ๊ฐ€ null์ด ์•„๋‹ ๊ฒฝ์šฐ โ†’ oldValue๋ฅผ Key๋กœ ๋งคํ•‘ ๋ฐ ๋ฐ˜ํ™˜

ComputeIfAbsent()

Image

Key๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ, compute()๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฉ”์„œ๋“œ

  • ํ•จ์ˆ˜ํ˜• ์ธํ„ฐํŽ˜์ด์Šค์ด๊ธฐ ๋•Œ๋ฌธ์— (key) โ†’ {} ๋ฐฉ์‹์œผ๋กœ ์ž‘์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • Key ๊ฐ’ ์กด์žฌ โ†’ ๋žŒ๋‹ค์‹ ์‹คํ–‰ X, ํ•ด๋‹น Key์— ๋งคํ•‘๋œ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
    • Key ๊ฐ’ ์กด์žฌ X โ†’ ๋žŒ๋‹ค์‹ ์‹คํ–‰ O, ๋žŒ๋‹ค์‹ ์ˆ˜ํ–‰ ๊ฐ’์„ Key์— ๋งคํ•‘ํ•˜๊ณ  ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

putIfAbsent()

Image

computeIfAbsent()์˜ ๋ณ€์ˆ˜๋ฒ„์ „์ž…๋‹ˆ๋‹ค.

  • key์— ๊ฐ’ ์กด์žฌ โ†’ ํ•ด๋‹น key์— ์กด์žฌํ•˜๋Š” ๊ธฐ์กด ๊ฐ’์„ ๋ฐ˜ํ™˜
  • key์— ๊ฐ’ ๋ฏธ์กด์žฌ โ†’ value๋ฅผ key์— ๋งคํ•‘ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ˜ํ™˜๊ฐ’ null

computeIfPresent()

Image

key๊ฐ€ ์กด์žฌํ•  ๊ฒฝ์šฐ์—๋งŒ ๋žŒ๋‹ค์‹์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. (computeIfAbsent์™€ ๋ฐ˜๋Œ€๋˜๋Š” ๋™์ž‘)

(key, value) โ†’ {} ์‹์˜ ์ฝ”๋“œ๋กœ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. (computeIfAbsent: (key) โ†’ {})

  • key์— ๊ฐ’์ด ์กด์žฌ โ†’ ๋žŒ๋‹ค์‹์„ ์ˆ˜ํ–‰ํ•˜๋ฉฐ, ๋žŒ๋‹ค์‹ ์ˆ˜ํ–‰ ๊ฐ’์„ key์— ๋งคํ•‘ํ•˜๊ณ  ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
  • key์— ๊ฐ’์ด ์กด์žฌ X โ†’ ๋žŒ๋‹ค์‹ ์ˆ˜ํ–‰ X, Null ๋ฐ˜ํ™˜