๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ–ฅ๏ธ ๋ฐฑ์—”๋“œ/Java

[ch.11] ์ปฌ๋ ‰์…˜ ํ”„๋ ˆ์ž„์›Œํฌ Map

by OR15A 2023. 11. 14.

MapEntry ์ธํ„ฐํŽ˜์ด์Šค

  • Map์ธํ„ฐํŽ˜์ด์Šค์˜ ๋‚ด๋ถ€ ์ธํ„ฐํŽ˜์ด์Šค.
  • Map์— ์ €์žฅ๋˜๋Š” Key-Value๋ฅผ ์Œ์œผ๋กœ ๋‹ค๋ฃจ๋ ค๊ณ  Entry๋ฅผ ๋‚ด๋ถ€์ ์œผ๋กœ ์ •์˜ํ•ด๋†“์Œ.
  • HashMap ํด๋ž˜์Šค๋‚ด๋ถ€์— Entry[ ] ํƒ€์ž…์˜ ํ…Œ์ด๋ธ” ํ•„๋“œ๊ฐ€ ์žˆ์Œ.


HashMap๊ณผ HashTable

  • ํ‚ค&๊ฐ’์„ ๋ฌถ์–ด์„œ ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ๋กœ ์ €์žฅํ•จ.
  • โ€˜ํ•ด์‹ฑโ€™์„ ์‚ฌ์šฉํ•ด์„œ ๋งŽ์€ ์–‘์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•  ๋•Œ ๋›ฐ์–ด๋‚œ ์„ฑ๋Šฅ์„ ๋ณด์—ฌ์คŒ
  • HashMap์€ Entry๋ผ๋Š” ๋‚ด๋ถ€์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ •์˜ํ•จ.
  • Entryํƒ€์ž…์˜ ๋ฐฐ์—ด ์„ ์–ธ ํ›„ ํ‚ค์™€ ๊ฐ’์€ Objectํƒ€์ž… ์œผ๋กœ ์ €์žฅ๋จ.
  • ํ‚ค๋Š” ์ €์žฅ๋œ ๊ฐ’์„ ์ฐพ๋Š”๋ฐ ์‚ฌ์šฉ๋˜๋ฏ€๋กœ ์œ ์ผํ•ด์•ผํ•จ.
  • HashMap์˜ ๊ฐ’์œผ๋กœ ๋‹ค์‹œ HashMap์ €์žฅ ๊ฐ€๋Šฅ.
  • โ€˜ํ•ด์‹ฑโ€™: ํ•ด์‹œํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ํ•ด์‹œํ…Œ์ด๋ธ”์— ์ €์žฅํ•˜๊ณ  ๊ฒ€์ƒ‰ํ•˜๋Š” ๊ธฐ๋ฒ•
  • ํ•ด์‹ฑ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ: ๋ฐฐ์—ด+๋งํฌ๋“œ๋ฆฌ์ŠคํŠธ


ํ•ด์‹ฑ

  • ๋ฐฐ์—ด+๋งํฌ๋“œ๋ฆฌ์ŠคํŠธ
  • ๋ฐฐ์—ด(๋น ๋ฅธ์ ‘๊ทผ ์œ ๋ฆฌ, ์ฐพ๊ธฐ ์‰ฝ๊ฒŒ) + ๋งํฌ๋“œ๋ฆฌ์ŠคํŠธ (์œ ์—ฐ, ๋ณ€๊ฒฝ ์œ ๋ฆฌ)


  • ํ•ด์‹ฑ ๊ตฌํ˜„๊ณผ์ •์—์„œ ํ•ด์‹œํ•จ์ˆ˜์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์ค‘์š”ํ•จ.
  • Objectํด๋ž˜์Šค์˜ hashCode( )๋Š” ๊ฐ์ฒด์˜ ์ฃผ์†Œ๋ฅผ ์ด์šฉํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ํ•ด์‹œ์ฝ”๋“œ๋ฅผ ๋งŒ๋“ค์–ด๋ƒ„.
  • ๋ชจ๋“  ๊ฐ์ฒด์— ๋Œ€ํ•ด hashCode( )๋ฅผ ํ˜ธ์ถœํ•œ ๊ฒฐ๊ณผ๊ฐ€ ์„œ๋กœ ์œ ์ผํ•œ ํ›Œ๋ฅญํ•œ ๋ฐฉ๋ฒ•.


hashCode( ) ์˜ค๋ฒ„๋ผ์ด๋”ฉ ์กฐ๊ฑด

  • โ‘ ๋™์ผ ๊ฐ์ฒด์— ๋Œ€ํ•ด hashCode( )๋ฅผ ์—ฌ๋Ÿฌ๋ฒˆ ํ˜ธ์ถœํ•ด๋„ ๊ฐ™์€ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ด์•ผํ•จ.
  • โ‘กequals( )๋กœ ๋น„๊ตํ•ด์„œ true๋กœ ์–ป์€ ๋‘ ๊ฐ์ฒด์˜ hashCode( )๊ฐ’์€ ์ผ์น˜ํ•ด์•ผํ•จ.
  • โ‘ขequals( )๋กœ false์ธ ๋‘ ๊ฐ์ฒด์˜ hashCode( ) ํ˜ธ์ถœ์‹œ์—๋Š” ๋˜๋„๋ก ๋‹ค๋ฅธ int๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ด์•ผํ•จ.
  • ์˜ˆ์‹œ) public int hashCode( )
    { return (name+age).hashCode( ); }
    โ†ณ Objects.hash( iv );