๐Ÿ™ƒ์•„์ง 2์ฐจ ์ •๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ๊ธ€!

 

๐Ÿ“Œ MSA(Microservice Architecture)๋ž€?

๐Ÿ“์ •์˜

์„œ๋น„์Šค๋ฅผ ๊ฐ๊ฐ ๋งˆ์ดํฌ๋กœํ•˜๊ฒŒ ๋‚˜๋ˆ„์–ด ์—ฐ๊ฒฐํ•œ ๊ตฌ์กฐ๋ฅผ ๋งํ•œ๋‹ค. ์ด๋ ‡๊ฒŒ ๋‚˜๋‰œ ์„œ๋น„์Šค๋Š” ์Šค์Šค๋กœ ๋Œ์•„๊ฐˆ ์ˆ˜ ์žˆ๊ณ , ๋…๋ฆฝ์ ์œผ๋กœ ๋ฐฐํฌ๊ฐ€ ๊ฐ€๋Šฅํ•œ ์„œ๋น„์Šค๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

 

๐Ÿ“์žฅ์ 

์‹œ์Šคํ…œ์„ ๋ถ€๋ถ„๋ถ€๋ถ„์œผ๋กœ ๋‚˜๋ˆˆ ํŠน์„ฑ ๋•๋ถ„์— ์‹œ์Šคํ…œ ์ „์ฒด์˜ ์ค‘๋‹จ ์—†์ด ํ•„์š” ๋ถ€๋ถ„๋งŒ ์—…๋ฐ์ดํŠธ-๋ฐฐํฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

์œ ์—ฐํ•œ ๋Œ€์‘์ด ๊ฐ€๋Šฅํ•ด ์‹ค์‹œ๊ฐ„์œผ๋กœ ์š”๊ตฌ์‚ฌํ•ญ์„ ๋ฐ˜์˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

ํŒ€ ๋‹จ์œ„๋กœ ์ ์ ˆํ•œ ๊ธฐ์ˆ  ์Šคํƒ์„ ๊ฐ€์ ธ๊ฐˆ ์ˆ˜ ์žˆ๋‹ค.

์„œ๋น„์Šค ๋ถ€ํ•˜์— ๋”ฐ๋ผ ๊ฐœ๋ณ„์  scale-out์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ํ•„์š”๋”ฐ๋ผ ํฌ๊ธฐ๋ฅผ ๋งž์ถœ์ˆ˜ ์žˆ์–ด ๋ฉ”๋ชจ๋ฆฌ, CPU์ ์œผ๋กœ ์ƒ๋‹น๋ถ€๋ถ„ ์ด์ต์ด๋œ๋‹ค.

 

๐Ÿ“๋‹จ์ 

์ž‘๊ฒŒ ๋‚˜๋ˆ„๋Š” ๋งŒํผ ๋ณต์žก์„ฑ์ด ๋Š˜์–ด๋‚œ๋‹ค. 

๊ฐœ๋ณ„ ์„œ๋น„์Šค๋กœ ๊ตฌ์„ฑํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด์— ํ•„์š”ํ•œ ์ธํ”„๋ผ ๊ตฌ์„ฑํ•  ๋•Œ ์ธํ”„๋ผ๊ฐ€ ๋ถ€์กฑ, ๋น„์šฉ์ ์ธ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ๊ฐœ๋ฐœ ํ™˜๊ฒฝ๊ณผ ์‹ค์ œ ์šด์˜ํ™˜๊ฒฝ์„ ๋™์ผํ•˜๊ฒŒ ๋‘๋Š” ๊ฒƒ์ด ์–ด๋ ต๋‹ค. (์ธํ”„๋ผ ๋ฌธ์ œ)

๋…๋ฆฝ๋œ ๊ตฌ์กฐ ๋•Œ๋ฌธ์— ๋ฐฐํฌ๋‚˜ ํ…Œ์ŠคํŠธ๋ฅผ ์ผ๊ด€์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์–ด๋ ต๋‹ค.

์„œ๋น„์Šค๊ฐ€ ๋ถ„์‚ฐ๋˜์–ด ๋‚ด๋ถ€ ์‹œ์Šคํ…œ๊ฐ„์˜ ํ†ต์‹ ์„ ์–ด๋–ป๊ฒŒ ํ• ์ง€, ๋˜ ํ†ต์‹  ์žฅ์•  ์‹œ ์–ด๋–ป๊ฒŒ transaction์„ ์œ ์ง€ํ• ์ง€๋„์— ๋Œ€ํ•œ ๊ณ ๋ ค๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

 

๋”๋ณด๊ธฐ

๐Ÿ“Monolithic Architecture(๋ชจ๋†€๋กœ์‹ ์•„ํ‚คํ…์ณ)

์†Œํ”„ํŠธ์›จ์–ด์˜ ๋ชจ๋“  ๊ตฌ์„ฑ์š”์†Œ๊ฐ€ ํ•œ ํ”„๋กœ์ ํŠธ์— ํ†ตํ•ฉ๋˜์–ด ์žˆ๋Š” ๊ตฌ์กฐ

ํ”„๋กœ๊ทธ๋žจ ๊ฐœ๋ฐœ์„ ์œ„ํ•ด ๋ชจ๋“ˆ๋ณ„๋กœ ๊ฐœ๋ฐœํ•˜๊ณ , ๊ฐœ๋ฐœ์ด ์™„๋ฃŒ๋˜๋ฉด ํ•˜๋‚˜์˜ ๊ฒฐ๊ณผ๋ฌผ๋กœ ํŒจํ‚ค์ง•ํ•˜์—ฌ ๋ฐฐํฌํ•˜๋Š” ํ˜•ํƒœ

์†Œ๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ์— ์ฃผ๋กœ ์‚ฌ์šฉ๋˜๋ฉฐ ๊ทœ๋ชจ๊ฐ€ ์ปค์งˆ์ˆ˜๋ก ํ•œ๊ณ„๊ฐ€ ์žˆ๋‹ค.

 

๐Ÿ“Monolithic Architecture ์žฅ์ 

  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ํ•˜๋‚˜์˜ ์ฝ”๋“œ ๋ฒ ์ด์Šค์— ๊ธฐ๋ฐ˜์„ ๋‘์–ด ๋‹จ์ˆœํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐœ๋ฐœ ์†๋„๊ฐ€ ๋น ๋ฆ„
  • ์‹คํ–‰ ํŒŒ์ผ ๋˜๋Š” ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ํ•˜๋‚˜์—ฌ์„œ ๋ฐฐํฌ๊ฐ€ ์‰ฌ์›€
  • ์ค‘์•™ ์ง‘์ค‘์‹์ด์–ด์„œ ํ•˜๋‚˜์˜ API๋งŒ์œผ๋กœ MSA๊ฐ€ ์—ฌ๋Ÿฌ API๋กœ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•œ ๊ธฐ๋Šฅ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ๋ถ„์‚ฐ๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ณด๋‹ค ์—”๋“œํˆฌ์—”๋“œ ํ…Œ์ŠคํŠธ๋ฅผ ๋” ๋น ๋ฅด๊ฒŒ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋ชจ๋“  ์ฝ”๋“œ๊ฐ€ ํ•œ ๊ณณ์— ์žˆ์–ด ๋””๋ฒ„๊น…์ด ์‰ฌ์–ด ์—๋Ÿฌ ํŠธ๋ ˆ์ด์‹ฑํ•˜๊ธฐ ์šฉ์ด

๐Ÿ“Monolithic Architecture ํ•œ๊ณ„, MSA ๋“ฑ์žฅ ๋ฐฐ๊ฒฝ

  • ๋ถ€๋ถ„ ์žฅ์• ๊ฐ€ ์ „์ฒด ์„œ๋น„์Šค ์žฅ์• ๋กœ ํ™•๋Œ€๋  ์ˆ˜ ์žˆ๋‹ค. 
  • ๋ถ€๋ถ„์ ์œผ๋กœ Scale-outํ•˜๊ธฐ ์–ด๋ ต๋‹ค
  • ์„œ๋น„์Šค ๋ณ€๊ฒฝ์ด ์–ด๋ ต๊ณ , ์ˆ˜์ •์ด ์žฅ์• ์˜ ์˜ํ–ฅ์„ ํŒŒ์•…ํ•˜๊ธฐ ํž˜๋“ค๋‹ค
  • ๋ฐฐํฌ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฐ๋‹ค
  • ํ•˜๋‚˜์˜ ํ”„๋ ˆ์ž„์›Œํฌ์™€ ์–ธ์–ด์— ์ข…์†์ ์ด๋‹ค

๐Ÿ“MSA๋ฅผ ์ง€๊ธˆ ์„œ๋น„์Šค์— ๋…น์ธ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ๋…น์ผ ์ˆ˜ ์žˆ์„๊นŒ?

User ์„œ๋น„์Šค, ๊ฒŒ์ž„ ์„œ๋น„์Šค, ๊ฒŒ์‹œ๊ธ€ ์„œ๋น„์Šค๋กœ ๋‚˜๋ˆ ๋ณผ ์ˆ˜ ์žˆ์„ ๊ฑฐ ๊ฐ™๋‹ค.

 

๐Ÿ“์—๋Ÿฌ์— ๊ด€๋ จํ•œ ๊ทน๋ณต ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ธฐ

 

- API Gateway

- ๋กœ๋“œ๋ฐธ๋Ÿฐ์„œ

 

๐Ÿ“๋ณด์ƒ ํŠธ๋žœ์žญ์…˜, Saga

 

๐Ÿ“์ˆ˜๋งŽ์€ ๋„์ปค๋ฅผ ๊ด€๋ฆฌ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค

์„œ๋น„์Šค ๋””์Šค์ปค๋ฒ„๋ฆฌ

 

๐Ÿ“๋ชจ๋“ˆ๊ฐ„์˜ ํ†ต์‹ ๋ฐฉ์‹

API๋กœ ํ†ต์‹ , ๋ฉ”์„ธ์ง€ ๋ธŒ๋กœ์ปค ๋“ฑ์˜ ๋‹ค์–‘ํ•œ ๋ฐฉ์‹์ด ์žˆ๋Š”๋ฐ ๋ฐฉ์‹ ์ฐพ์•„๋ณด์ž 

 

๐Ÿ“์–ธ์–ด๊ฐ€ ๋งŽ์•„์ง€๋ฉด ์žฅ์ ๋„ ์žˆ๊ณ  ๋‹จ์ ๋„ ์žˆ์–ด

์žฅ์ ์€ ์–ธ์–ด๋งˆ๋‹ค์˜ ํŠน์„ฑ์„ ์‚ด๋ ค ์žฅ์ ์„ ๋ชจ์•„ ์„œ๋น„์Šค๋ฅผ ๋งŒ๋“ค์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์ง€๋งŒ

์–ธ์–ด๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์•„์ง€๋ฉด ์ธ์žฌ ํ’€์„ ์œ ์ง€ํ•˜๊ธฐ๊ฐ€ ํž˜๋“ค๋‹ค. ํŠนํžˆ ๋ฉ”์ด์ € ์–ธ์–ด๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด ํ•ด๋‹น ์–ธ์–ด๋ฅผ ์•„๋Š” ์‚ฌ๋žŒ์„ ์ฐพ๊ธฐํž˜๋“ค๊ธฐ ๋•Œ๋ฌธ

 

๐Ÿ“Œ ์ œ๋„ค๋ฆญ์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•˜๊ณ , ์ปฌ๋ ‰์…˜ ํด๋ž˜์Šค์—์„œ ์™œ ์ œ๋„ค๋ฆญ์„ ์‚ฌ์šฉํ•˜๋Š” ์ง€ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

๐Ÿ“ ์ •์˜

ํด๋ž˜์Šค ์ •์˜์‹œ ํŠน์ • ํƒ€์ž…์„ ๋ฏธ๋ฆฌ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์™ธ๋ถ€์˜ ์‚ฌ์šฉ์ž์— ์˜ํ•ด ์ง€์ •๋˜๋Š” ๊ฒƒ

 

๐Ÿ“์žฅ์ 

- ์ œ๋„ค๋ฆญ์„ ์‚ฌ์šฉํ•˜๋ฉด ์ž˜๋ชป๋œ ํƒ€์ž…์ด ๋“ค์–ด์˜ฌ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์„ ์ปดํŒŒ์ผ ๋‹จ๊ณ„์—์„œ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค.

- ํƒ€์ž… ๋ณ€ํ™˜์„ ์ค„์ธ๋‹ค. ์ปฌ๋ ‰์…˜ ํด๋ž˜์Šค์— ๋„ฃ๊ณ  ๋บ„ ๋•Œ ์ œ๋„ค๋ฆญ์„ ์‚ฌ์šฉํ•˜๋ฉด ํƒ€์ž… ๋ณ€ํ™˜์ด ํ•„์š” ์—†์–ด์ ธ ํœด๋จผ์—๋Ÿฌ ์ค„์ผ์ˆ˜ ์žˆ๋‹ค

- ๋น„์Šทํ•œ ๊ธฐ๋Šฅ์„ ์—ฌ๋Ÿฌ ํƒ€์ž…์— ์ง€์›ํ•˜๋Š” ๊ฒฝ์šฐ ๋ณ„๋„์˜ ์˜ค๋ฒ„๋กœ๋”ฉ์„ ํ•  ํ•„์š”๊ฐ€ ์—†์–ด ์ฝ”๋“œ๋ผ์ธ์ˆ˜๊ฐ€ ์ค„๊ณ  ์ฝ”๋“œ์˜ ์žฌ์‚ฌ์šฉ์„ฑ์ด ๋†’์•„์ง„๋‹ค.

- ํŠน์ • ํƒ€์ž…์— ์ข…์†๋˜์ง€ ์•Š์•„ ์œ ์—ฐํ•œ ๋กœ์ง์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

 

๐Ÿ“์ œ๋„ค๋ฆญ์„ "์ปฌ๋ ‰์…˜ ํด๋ž˜์Šค"์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ , ์ปฌ๋ ‰์…˜ ํด๋ž˜์Šค๋ฅผ ์ œ๋„ค๋ฆญ ๊ธฐ๋ฒ•์œผ๋กœ ๋งŒ๋“  ์ด์œ  (์ด๊ฑธ ์ž˜ ํŠน์ •ํ•˜์ง€ ๋ชปํ•œ๊ฑฐ ๊ฐ™์•„์„œ ์ถ”๊ฐ€์ ์ธ ์ˆ˜์ •์ด ํ•„์š”ํ•จ)

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

 

๐Ÿ“ ๋‹จ์ 

- ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ์ด ๋–จ์–ด์ง„๋‹ค. ํƒ€์ž…์„ ํŠน์ •ํ•˜์ง€ ์•Š์•„ ์–ด๋–ค ๊ฐ์ฒด๊ฐ€ ๋“ค์–ด์˜ค๋Š” ์ง€ ๋”ฐ๋กœ ์ฝ”๋“œ๋ฅผ ์ถ”์ ํ•ด์„œ ์ฝ์–ด๋ด์•ผ ํ•œ๋‹ค. 

 

๋”๋ณด๊ธฐ

๐Ÿ“์ œ๋„ค๋ฆญ ์™€์ผ๋“œ ์นด๋“œ

๋ชจ๋“  ํƒ€์ž…์„ ๋Œ€์‹ ํ•  ์ˆ˜ ์žˆ๋Š” ํƒ€์ž…์„ ์™€์ผ๋“œ ์นด๋“œ๋ผ๊ณ  ํ•˜๋ฉฐ ์ด 3๊ฐ€์ง€ ํ˜•ํƒœ๋กœ ์ด์šฉํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  ํด๋ž˜์Šค๋‚˜ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์˜ฌ์ˆ˜ ์žˆ๋Š” ์™€์ผ๋“œ ์นด๋“œ ?(๋ฌผ์Œํ‘œ) ๋กœ๋งŒ ํ‘œ๊ธฐ

์ตœ์ƒ์œ„ ํƒ€์ž…์„ ์ •์˜ํ•ด ํ•œ๊ณ„๋ฅผ ์ •ํ•˜๋Š” ์ƒํ•œ ๊ฒฝ๊ณ„ ์™€์ผ๋“œ ์นด๋“œ๋Š” ? extends ํ‚ค์›Œ๋“œ์™€ ํ•จ๊ป˜ ํ‘œ๊ธฐ

์ตœํ•˜์œ„ ํƒ€์ž…์„ ์ •์˜ํ•ด ํ•œ๊ณ„๋ฅผ ์ •ํ•˜๋Š” ํ•˜ํ•œ ๊ฒฝ๊ณ„ ์™€์ผ๋“œ ์นด๋“œ๋Š” ? super ํ‚ค์›Œ๋“œ์™€ ํ•จ๊ป˜ ํ‘œ๊ธฐ

 

๐Ÿ“์ œ๋„ค๋ฆญ์˜ ์ƒ์†๊ณผ ๊ตฌํ˜„

์ œ๋„ค๋ฆญ๋„ ์ƒ์†์ด ๊ฐ€๋Šฅํ•˜๋ฉฐ ํ•˜์œ„ํด๋ž˜์Šค๋Š” ์ถ”๊ฐ€๋กœ ํƒ€์ž… ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค.

์ธํ„ฐํŽ˜์ด์Šค ๋˜ํ•œ ๊ฐ€๋Šฅํ•œ๋ฐ ์ด๋ฅผ ๊ตฌํ˜„ํ•œ ํด๋ž˜์Šค๋„ ์ œ๋„ค๋ฆญ ํƒ€์ž…์ด์–ด์•ผ ํ•œ๋‹ค.

 

๐Ÿ“ ์ œ๋„ค๋ฆญ์—์„œ ํƒ€์ž…์˜ ์•ˆ์ •์„ฑ

ํƒ€์ž…์˜ ์•ˆ์ •์„ฑ์„ ๋†’์ธ๋‹ค๋Š” ๊ฒƒ์€ ์˜๋„ํ•˜์ง€ ์•Š๋Š” ํƒ€์ž…์˜ ๊ฐ์ฒด๋ฅผ ์ €์žฅํ•˜๋Š” ๊ฒƒ์„ ๋ง‰๊ณ , ์ €์žฅ๋œ ๊ฐ์ฒด๋ฅผ ๊บผ๋‚ด์˜ฌ ๋•Œ ์›๋ž˜์˜ ํƒ€์ž…๊ณผ ๋‹ค๋ฅธ ํƒ€์ž…์œผ๋กœ ํ˜•๋ณ€ํ™˜๋˜์–ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์˜ค๋ฅ˜๋ฅผ ์ค„์—ฌ์ค€๋‹ค๋Š” ๋œป

 

๐Ÿ“์ œ๋„ค๋ฆญ๊ณผ ์˜ค๋ธŒ์ ํŠธ์˜ ์ฐจ์ด

์ œ๋„ค๋ฆญ์„ ์‚ฌ์šฉํ•˜๋ฉด ํƒ€์ž…์„ ๋™์ ์œผ๋กœ ์ฒดํฌํ•˜์—ฌ ๋ถˆํ•„์š”ํ•œ ํ˜•๋ณ€ํ™˜์„ ์•ˆํ•ด๋„ ๋˜๋Š”๋ฐ, ์˜ค๋ธŒ์ ํŠธ์˜ ๊ฒฝ์šฐ ์ถœ๋ ฅํ•˜๊ณ ์ž ํ• ๋•Œ๋Š” ํ˜• ๋ณ€ํ™˜์„ ํ•ด์•ผ๋œ๋‹ค. ์ˆ˜๋™์ ์œผ๋กœ ํ˜• ๋ณ€ํ™˜์„ ์ง„ํ–‰ํ•˜๋‹ค๋ณด๋‹ˆ ์ž˜๋ชป๋œ ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜์„ ์‹œ๋„ํ•˜๋Š” ๋“ฑ์˜ ์˜ค๋ฅ˜ ๊ฐ€๋Šฅ์„ฑ์ด ์กด์žฌํ•œ๋‹ค.  

 

๐Ÿ“ํ”„๋กœ์ ํŠธ์—์„œ ์ œ๋„ค๋ฆญ์„ ์‚ฌ์šฉํ•ด๋ณธ ๊ฒฝํ—˜

๊ณตํ†ต ์‘๋‹ต ์ฒ˜๋ฆฌ์—์„œ ์š”์ฒญํ•œ ๊ฒฐ๊ณผ์˜ data๋ฅผ ์–ด๋– ํ•œ ํƒ€์ž…์œผ๋กœ๋„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ์ œ๋„ค๋ฆญ์„ ์‚ฌ์šฉํ•œ ๊ฒฝํ—˜์ด ์žˆ๋‹ค.

์š”์ฒญ์— ๋Œ€ํ•œ ์‘๋‹ต์œผ๋กœ ์ •๋ง ๋‹ค์–‘ํ•œ ํƒ€์ž…์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๊ฒŒ ๋˜๋Š”๋ฐ ์ด ์‘๋‹ต๋งˆ๋‹ค ๋ณ„๊ฐœ์˜ ๋งค๊ฐœ์ธ์ž์™€ ๋ฆฌํ„ด๊ฐ’์„ ์ •์˜ํ•ด ์˜ค๋ฒ„๋กœ๋”ฉํ•˜๊ฒŒ ๋˜๋ฉด ๊ต‰์žฅํžˆ ๋งŽ์€ ์ˆ˜์˜ ๋ฉ”์†Œ๋“œ๋“ค์ด ํ•„์š”๋กœ ํ•˜๊ฒŒ ๋œ๋‹ค. ์ด๋ฅผ ํ•˜๋‚˜๋กœ ๊ฐ„๋žตํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ œ๋„ค๋ฆญ์„ ์‚ฌ์šฉํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์‘๋‹ตํ•  ์ˆ˜ ์žˆ๊ฒŒ ์ฒ˜๋ฆฌํ•˜์˜€๋‹ค. 

 

๐Ÿ“์ œ๋„ค๋ฆญ ๋ฉ”์†Œ๋“œ

์ œ๋„ค๋ฆญ ํƒ€์ž…์„ ๋ฉ”์„œ๋“œ ๋ฆฌํ„ด ํƒ€์ž… ์•ž์— ์„ ์–ธํ•œ ๋ฉ”์„œ๋“œ๋ฅผ ์ œ๋„ค๋ฆญ ๋ฉ”์„œ๋“œ๋ผ ํ•œ๋‹ค.

 

๐Ÿ“ ๊ฒฝํ—˜์— ๋Œ€ํ•ด ๋ฌป๋Š”๋ฐ ๊ฒฝํ—˜์ด ์—†๋‹ค๋ฉด ์˜ˆ์ƒ์„ ํ•ด๋ด๋ผ

 

๐Ÿ“Œ List, Set, Map, HashMap์˜ ์ฐจ์ด์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

๐Ÿ“ ์ •์˜

  • List : ์ˆœ์„œ๋ฅผ ๊ฐ€์ง€๊ณ  ์ผ๋ ฌ๋กœ ๋‚˜์—ด๋œ ๋ฐ์ดํ„ฐ๋“ค์„ ์ €์žฅํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ, ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜๋ฉฐ, ํฌ๊ธฐ๊ฐ€ ๊ณ ์ •๋˜์–ด์žˆ์ง€ ์•Š์•„ ๊ฐ€๋ณ€์„ฑ์ด ์žˆ๋‹ค. ์ข…๋ฅ˜์—๋Š” Vector, ArrayList, LinkedList๊ฐ€ ์žˆ๋‹ค.
  • Set : ๋ฐ์ดํ„ฐ ์ง‘ํ•ฉ ์ž๋ฃŒ๊ตฌ์กฐ๋กœ ๋น„์ˆœ์ฐจ์ ์ด๊ธฐ์— ํŠน์ •ํ•œ ์ˆœ์„œ๊ฐ€ ์—†๊ณ  ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š์•„ ๊ฐ™์€ ๊ฐ’์„ ์‚ฝ์ž…ํ•˜๋ฉด ๋งˆ์ง€๋ง‰ ๊ฐ’ ํ•˜๋‚˜๋งŒ ์ €์žฅํ•˜๊ฒŒ ๋œ๋‹ค. index๊ฐ€ ์—†์–ด iterator์„ ์‚ฌ์šฉํ•œ๋‹ค. ์ข…๋ฅ˜์—๋Š” HashSet, LinkedHashSet, TreeSet์ด ์žˆ๋‹ค.
  • Map : Java์—์„œ key์™€ value์˜ ํ•œ์Œ์œผ๋กœ ์ด๋ฃจ์–ด์ง€๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ ํ˜•ํƒœ๋ฅผ ๋งํ•œ๋‹ค. ๋‹ค์–‘ํ•œ ๊ตฌํ˜„์ฒด๊ฐ€ ์กดํ•ดํ•˜๋Š” ๋ฐ HashMap, LinkedHashMap, TreeMap, EnumMap ๋“ฑ ๋งŽ๋‹ค. 
  • HashMap : Map์˜ ๊ตฌํ˜„์ฒด ์ค‘ ํ•˜๋‚˜๋กœ key์— ๋Œ€ํ•œ ์ค‘๋ณต์ด ์—†๊ณ  ์ˆœ์„œ๋ฅผ ๋ณด์žฅํ•˜์ง€ ์•Š๋Š”๋‹ค. index๊ฐ€ ์—†์–ด iterator์„ ์‚ฌ์šฉํ•œ๋‹ค. ํ‚ค ๊ฐ’์œผ๋กœ ํ•ด์‹œํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•œ ๊ฒฐ๊ณผ๋กœ ์ €์žฅ์œ„์น˜๋ฅผ ๊ฒฐ์ •ํ•˜๊ณ , ํ•ด์‹œ ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ์œ„์น˜๋ฅผ ๋ฐ”๋กœ ์•Œ ์ˆ˜ ์žˆ์–ด ๋ฐ์ดํ„ฐ์˜ ์ถ”๊ฐ€, ์‚ญ์ œ, ๊ฒ€์ƒ‰์ด ๋น ๋ฅด๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค. 

+List ์™€ HashMap์€ ๋”ฅ๋‹ค์ด๋ธŒํ•ด์„œ ๊ณต๋ถ€ํ•  ๊ฒƒ

+Java์—์„œ List, Set, Map ๋ชจ๋‘ ์ธํ„ฐํŽ˜์ด์Šค 

๋”๋ณด๊ธฐ

๐Ÿ“iterator?

๋œป ๋ฐ˜๋ณต์ž, ๋ฐฐ์—ด์ด๋‚˜ ๊ทธ์™€ ์œ ์‚ฌํ•œ ์ž๋ฃŒ ๊ตฌ์กฐ ๋‚ด๋ถ€์˜ ์š”์†Œ๋ฅผ ์ˆœํšŒํ•˜๋Š” ๊ฐ์ฒด

 

๐Ÿ“List๊ฐ€ ์งˆ๋ฌธํ•  ๊ฑฐ๋ฆฌ๊ฐ€ ๋งŽ๋‹ค. ์ข…๋ฅ˜์™€ ํŠน์ง•์„ ์•Œ์•„๋‘ฌ๋ผ

  • ArrayList : Vector ํด๋ž˜์Šค์˜ ๋‹จ์ ์„ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋‚˜์˜จ ํด๋ž˜์Šค. ๊ฐ์ฒด๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ๊ฐ์ฒด๊ฐ€ ์ธ๋ฑ์Šค๋กœ ๊ด€๋ฆฌ๋œ๋‹ค.  ์ธ๋ฑ์Šค๋กœ ๊ด€๋ฆฌ๋˜๋Š” ๊ฒƒ์€ ๋ฐฐ์—ด๊ณผ ์œ ์‚ฌํ•˜์ง€๋งŒ ์‚ฌ์šฉ์ค‘์— ํฌ๊ธฐ๊ฐ€ ๋ณ€ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ํฐ ์ฐจ์ด์ ์ด ์žˆ๋‹ค. Thread-safeํ•˜์ง€ ๋ชปํ•˜๋‹ค. ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ํ™˜๊ฒฝ์—์„œ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค๋ฉด CopyOnWriteArrayList ๋˜๋Š” Collections.synchronizedList๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ArrayList๋Š” ์ดˆ๊ธฐ ์šฉ๋Ÿ‰์ด 10์ด๊ณ  ์ดˆ๊ณผํ•˜๋ฉด 1.5๋ฐฐ, iterator๋งŒ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • Vector : ๋ฒกํ„ฐ๋Š” ์ž๋ฐ” ์ปฌ๋ ‰์…˜ ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ๋‚˜์˜ค๊ธฐ ์ „๋ถ€ํ„ฐ ์žˆ๋˜ ํด๋ž˜์Šค. ์ˆœ์„œ๋ฅผ ์œ ์ง€ํ•˜๊ณ , ์ค‘๋ณต์„ ํ—ˆ์šฉํ•œ๋‹ค. , iterator์™€ Enumeration์ด ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๋‹ค. ์ดˆ๊ธฐ์šฉ๋Ÿ‰ 10์ด๊ณ  ์ดˆ๊ณผํ•˜๋ฉด 2๋ฐฐ. HashTable๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์†Œ์Šค ์ฝ”๋“œ ํ˜ธํ™˜ ๋•Œ๋ฌธ์— ๋‚จ์•„ ์žˆ๋Š” ํด๋ž˜์Šค ์ด๊ธฐ ๋•Œ๋ฌธ์— ArrayList๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ถ”์ฒœ๋œ๋‹ค. Vector๊ฐ€ ์„ฑ๋Šฅ์ ์œผ๋กœ ๋ฌธ์ œ๊ฐ€ ๋˜๋Š” ๊ฑด Thread-safe ํŠน์„ฑ ๋•Œ๋ฌธ์ธ๋ฐ ๋™๊ธฐํ™”๊ฐ€ ํ•„์š”ํ•œ์ง€ ์—ฌ๋ถ€์™€ ์ƒ๊ด€์—†์ด ์ž‘์—…์„ ์ž ๊ทธ๋Š” ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ.
  • LinkedList : ๋งํฌ๋“œ๋ฆฌ์ŠคํŠธ ์—ญ์‹œ List์˜ ๊ตฌํ˜„์ฒด์ง€๋งŒ, ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์—ฐ์†์ ์œผ๋กœ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด์€ ๋…ธ๋“œ๋“ค์€ ์ด์ „๊ณผ ๋‹ค์Œ ๋…ธ๋“œ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ํฌ์ธํ„ฐ๋ฅผ ํ†ตํ•ด ์—ฐ๊ฒฐ๋œ๋‹ค. ๋ฐฐ์—ด์—์„œ๋Š” ์ค‘๊ฐ„ ๊ฐ’์„ ์‚ฝ์ž…ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•˜๋ฉด ๊ทธ ๋’ค์˜ ๊ฐ’์„ ์ „๋ถ€ ์•ž์œผ๋กœ ๋Œ๊ณ ์˜ค๊ฑฐ๋‚˜ ๋ฐ€์–ด๋‚ด์•ผํ•˜๋Š” ํฐ ์ด๋™์ด ์žˆ๋Š”๋ฐ ๋งํฌ๋“œ๋ฆฌ์ŠคํŠธ ์‚ฌ์ด์— ๊ฐ’์„ ์‚ฝ์ž…, ์‚ญ์ œ์‹œ ์—ฐ๊ฒฐํ•˜๋Š” ํฌ์ธํ„ฐ๋ฅผ ์ˆ˜์ •ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋˜๋ฏ€๋กœ ์ด๋Ÿฐ ์ƒํ™ฉ์—์„œ์˜ ์„ฑ๋Šฅ์ด ์šฐ์ˆ˜ํ•˜๋‹ค  

๐Ÿ“List ์ฆ๊ฐ€ํ•˜๋Š” ์›๋ฆฌ

 

 

๐Ÿ“Set ์ข…๋ฅ˜

HashSet์€ HashMap๊ณผ Set ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ƒ์†ํ•˜์—ฌ ๋น ๋ฅธ ์—ฐ์‚ฐ์ด ๊ฐ€๋Šฅํ•œ ์ž๋ฃŒํ˜•, ์ •๋ ฌ ๋ถˆ๊ฐ€
LinkedHashSet์€ LinkedList๋กœ ์—ฐ๊ฒฐ๋œ HashSet์ด๋ผ ํ•  ์ˆ˜ ์žˆ๊ณ , ์ž…๋ ฅ ์ˆœ์„œ๋ฅผ ๋ณด์žฅํ•ด์ค€๋‹ค.
TreeSet์€ Tree์™€ Set์„ ์ƒ์†ํ•œ ๊ฒƒ์œผ๋กœ ์—ฐ์‚ฐ์ด ๋А๋ ค๋„ ๋‹ค์–‘ํ•œ ์ •๋ ฌ์„ ์ง€์›ํ•˜๋Š” ์ž๋ฃŒํ˜•, ์‚ฝ์ž…๊ณผ ๋™์‹œ์— ์ •๋ ฌ

 

๐Ÿ“Set์˜ ์ค‘๋ณต ์‚ญ์ œ ์›๋ฆฌ

 

 

๐Ÿ“ HashMap์˜ ์›๋ฆฌ

HashMap์€ ์ž๋ฃŒ๊ตฌ์กฐ๋กœ ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•œ๋‹ค. ๋ฐฐ์—ด์€ ์ธ๋ฑ์Šค๋ฅผ ํ†ตํ•ด ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ํŠน์ง•์ด ์žˆ๋Š”๋ฐ, HashMap์€ ํ•ด์‹ฑ์„ ํ†ตํ•ด Map๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋  ์œ„์น˜์˜ ์ธ๋ฑ์Šค๋ฅผ ๊ตฌํ•˜์—ฌ ์ €์žฅํ•˜๊ฒŒ ๋œ๋‹ค.

๐Ÿ“Map.Entry

Map์ธํ„ฐํŽ˜์ด์Šค์˜ ๋‚ด๋ถ€ ์ธํ„ฐํŽ˜์ด์Šค๋กœ Map์— ์ €์žฅ๋˜๋Š” key-value ์Œ์„ ๋‹ค๋ฃจ๊ธฐ ์œ„ํ•ด ๋‚ด๋ถ€์ ์œผ๋กœ ์ •์˜ํ•ด ๋†“์€ ๊ฒƒ์„ ๋งํ•œ๋‹ค.

 

๐Ÿ“ํ•ด์‹ฑ

 

 

 

 

 

 

๐Ÿ“HashMap, HashTable์˜ ์ฐจ์ด

HashMap์ด๋‚˜ HashTable์ด๋‚˜ Map ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋Šฅ์€ ๊ฐ™๋‹ค. 

๋‹ค๋งŒ,

- HashTable์€ Thread-safeํ•˜๊ณ  HashMap์€ Thread-safeํ•˜์ง€ ์•Š๋‹ค๋Š” ์ฐจ์ด

- HashTable์€ key์— null๊ฐ’์„ ํ—ˆ์šฉํ•˜์ง€๋งŒ HashMap์€ key์— null๊ฐ’์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.

- HashMap์€ ๋ณด์กฐํ•ด์‹œ๋ฅผ ์‚ฌ์šฉํ•ด ๋ณด์กฐํ•ด์‹œ๊ฐ€ ์—†๋Š” HashTable์— ๋น„ํ•ด ํ•ด์‹œ ์ถฉ๋Œ์ด ๋œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์–ด ์ƒ๋Œ€์ ์œผ๋กœ ์„ฑ๋Šฅ์ƒ ์ด์ ์ด ์žˆ๋‹ค.

- ๊ทธ๋ฆฌ๊ณ  ์ผ๋‹จ HashMap์€ ๊พธ์ค€ํžˆ ๊ฐœ์„ ๋˜๊ณ  ์žˆ๊ธฐ์— ์„ฑ๋Šฅ๊ณผ ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด ๋” ์ข‹์€ ์ ์ด ๋งŽ๋‹ค.

HashTable์€ ์ปฌ๋ ‰์…˜ ํ”„๋ ˆ์ž„์›Œํฌ ์ด์ „๋ถ€ํ„ฐ ์กด์žฌํ•˜์—ฌ JRE 1.0, JRE 1.1 ํ™˜๊ฒฝ์„ ๋Œ€์ƒ์œผ๋กœ ๊ตฌํ˜„ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋™์ž‘ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜์œ„ ํ˜ธํ™˜์„ฑ์œผ๋กœ ์ œ๊ณตํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ

 

๐Ÿ“HashMap vs ๋‹ค๋ฅธ ๋งต๊ณผ ๋น„๊ต (์‹œ๊ฐ„ ๋ณต์žก๋„ ๋น„๊ต)

 
 
Get
ContainsKey
Next
Data Structure
HashMap
O(1)
O(1)
O(h / n)
Hash Table
LinkedHashMap
O(1)
O(1)
O(1)
Hash Table + Linked List
IdentityHashMap
O(1)
O(1)
O(h / n)
Array
WeakHashMap
O(1)
O(1)
O(h / n)
Hash Table
EnumMap
O(1)
O(1)
O(1)
Array
TreeMap
O(log n)
O(log n)
O(log n)
Red-black tree
ConcurrentHashMap
O(1)
O(1)
O(h / n)
Hash Tables
ConcurrentSkipListMap
O(log n)
O(log n)
O(1)
Skip List
 

์ถœ์ฒ˜ : http://infotechgems.blogspot.com/2011/11/java-collections-performance-time.html 

 

๐Ÿ“ํ•ด์‹œ ํ•จ์ˆ˜

๋ฐ์ดํ„ฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์ž„์˜์˜ ๊ธธ์ด์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜ํ•™์  ์—ฐ์‚ฐ์„ ํ†ตํ•ด ๊ณ ์ •๋œ ๊ธธ์ด์˜ ๋ฐ์ดํ„ฐ๋กœ ๋งคํ•‘ํ•˜๋Š” ํ•จ์ˆ˜ 

 

๐Ÿ“ํ•ด์‹œ ํ…Œ์ด๋ธ”

ํ•ด์‹œ ํ•จ์ˆ˜๋กœ ์–ป์€ ํ•ด์‹œ๋ฅผ ํ‚ค๋กœ ํ™œ์šฉํ•˜์—ฌ index๋กœ ์‚ฌ์šฉํ•˜๊ณ  ํ•ด๋‹น index์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•ด ํšจ์œจ์ ์ธ ๊ฒ€์ƒ‰์„ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค. 

 

๐Ÿ“ํ•ด์‹œ ์ถฉ๋Œ

๋‘๊ฐœ์˜ ๋‹ค๋ฅธ key๊ฐ€ ๋™์ผํ•œ hash๊ฐ’์„ ๊ฐ–๋Š” ๊ฒฝ์šฐ๋ฅผ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ–ˆ๋‹คํ•œ๋‹ค. 

 

๐Ÿ“ํ•ด์‹œ ์ถฉ๋Œ ํ•ด๊ฒฐ๋ฒ•

์ž๋ฐ”๋Š” ์–ด๋–ค๊ฑธ ์„ ํƒํ–ˆ์„ ๊นŒ๋„

Open Addressing (๊ฐœ๋ฐฉ์ฃผ์†Œ๋ฒ•))

์ถฉ๋Œ ๋ฐœ์ƒ์‹œ ํ•ด์‹œ ํ•จ์ˆ˜๋กœ ์–ป๋Š” ์ฃผ์†Œ๊ฐ€ ์•„๋‹ˆ๋ผ ๋น„์–ด์žˆ๋Š” ๋‹ค๋ฅธ ์ฃผ์†Œ ๊ณต๊ฐ„์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

์ข…๋ฅ˜ : ์„ ํ˜• ํƒ์ƒ‰, ์ œ๊ณฑ ํƒ์ƒ‰, ์ด์ค‘ ํ•ด์‹œ 

 

Chaining)

์ถฉ๋Œ์ด ๋‚˜๋ฉด ํ•ด๋‹น ๋ฒ„ํ‚ท์— ์ฒด์ธ ํ˜•ํƒœ๋กœ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

+ ํ•˜์ง€๋งŒ ํ•œ๊ณณ์˜ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๊ฐ€ ๋ชฐ๋ฆฌ๊ฒŒ ๋˜๋Š” ์ ๋ฆผ ํ˜„์ƒ๋“ฑ์ด ์žˆ๋‹ค.

 

์ž๋ฐ”์—์„œ ์ฑ„ํƒํ•˜๊ณ ์žˆ๋Š” ์ถฉ๋Œ ํ•ด๊ฒฐ๋ฒ• 

https://odol87.tistory.com/4

 

๐Ÿ“ Map์„ ๊ตฌํ˜„ํ•œ ํด๋ž˜์Šค๋“ค ์ค‘ ํ•˜๋‚˜์™€ HashMap๊ณผ ๋น„๊ตํ•˜์—ฌ ์„ค๋ช…ํ•ด์ฃผ์‹ค ์ˆ˜ ์žˆ์œผ์‹ค๊นŒ์š”?

 

๐Ÿ“TreeMap๊ณผ HashMap์ค‘ ๊ฐœ๋ณ„ ํƒ์ƒ‰๊ณผ ๋ฒ”์œ„ ํƒ์ƒ‰์— ๊ฐ•ํ•œ ๊ฒƒ์€?

๊ฐœ๋ณ„ ๊ฒ€์ƒ‰์€ HashMap,๋ฒ”์œ„ ๊ฒ€์ƒ‰์€ TreeMap

 

๐Ÿ“TreeMap

์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ €์žฅํ•˜๊ณ  ์ด์ง„๊ฒ€์ƒ‰ ๋ฐฉ๋ฒ•์œผ๋กœ.. ์žฅ์ ๊ณผ ์šฉ๋„

 

๐Ÿ“HashMapํ•ด์„œ ์กฐํšŒ ์†๋„๋ฅผ ๊ฐœ์„ ํ–ˆ๋˜ ๊ฒฝํ—˜

 

+ Recent posts