equals() & hashCode()

๋‘ ๋ฉ”์†Œ๋“œ๋Š” ์™œ ๊ฐ™์ด ์žฌ์ •์˜ ํ•ด์•ผํ• ๊นŒ?

๋™๋“ฑ์„ฑ : ๊ฐ์ฒด๊ฐ€ ์ฃผ์†Œ๊ฐ’์ด ๋‹ฌ๋ผ๋„ ๋‚ด์šฉ(ํ•„๋“œ๊ฐ’)์ด ๊ฐ™๋‹ค๋ฉด ๊ฐ™๋‹ค๊ณ  ๋ณด๋Š”๊ฒƒ, equals()

๋™์ผ์„ฑ : ๊ฐ์ฒด๊ฐ€ ์ฃผ์†Œ๊ฐ’์ด ๋‹ค๋ฅด๋ฉด ์•„๋ฌด๋ฆฌ ๊ฐ™์€ ๋‚ด์šฉ์ด๋ผ๋„ ๊ฐ™๋‹ค๊ณ  ๋ณด์ง€ ์•Š์Œ, ==

๋‘ ๊ฐ์ฒด์˜ ํ•„๋“œ๊ฐ’๊ณผ ํ•ด์‰ฌ๊ฐ’์˜ ๋™๋“ฑ์„ฑ๊ณผ ๋™์ผ์„ฑ์„ ๋น„๊ตํ•  ๋•Œ ์˜ค๋ฒ„๋ผ์ด๋”ฉ ํ•ด์„œ ์‚ฌ์šฉํ•œ๋‹ค.

์™œ equals()๋งŒ ์˜ค๋ฒ„๋ผ์ด๋”ฉ ํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š”์ง€์— ๋Œ€ํ•ด์„œ ๋‹ค์‹œ ๊ณต๋ถ€ํ•ด์•ผ๊ฒ ๋‹ค.

์™œ ๊ฐ™์ด ์˜ค๋ฒ„๋ผ์ด๋”ฉ ํ•ด์•ผ๋ ๊นŒ?

๋งŒ์•ฝ eqauls()๋งŒ ์žฌ์ •์˜ ํ•œ๋‹ค๋ฉด ํ•„๋“œ๊ฐ’(value)๊ฐ€ ๊ฐ™์•„๋„ hashCode๋Š” ๊ฐ™์ง€ ์•Š๋‹ค.

๋”ฐ๋ผ์„œ hashTable๊ณผ ๊ฐ™์€ ์ž๋ฃŒ๊ตฌ์กฐ์—์„œ ๊ทธ ๊ฐ์ฒด๋ฅผ putํ•œ ์ƒํƒœ์—์„œ ํ•ด๋‹น ๊ฐ์ฒด๊ฐ€ ์ €์žฅ๋œ ๋ฒ„ํ‚ท์„ ์ฐพ์„ ์ˆ˜ ์—†๋‹ค. (key๊ฐ’์„ hashCode๋กœ ์„ค์ •ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋ฒ„ํ‚ท์€ ํ•ด์‰ฌ ํ…Œ์ด๋ธ”์—์„œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋œ ๊ณณ์ด๋‹ค.)

๋ฐ˜๋Œ€๋กœ hashCode()๋งŒ ์žฌ์ •์˜ ํ•œ๋‹ค๋ฉด hash๊ฐ’์„ ์ด์šฉํ•ด์„œ ๊ฐ์ฒด๊ฐ€ ์ €์žฅ๋œ ๋ฒ„ํ‚ท์„ ์ฐพ์„ ์ˆ˜ ์žˆ๊ฒ ์ง€๋งŒ, ํ•ด๋‹น ๊ฐ์ฒด๊ฐ€ ์ž์‹ ๊ณผ ๊ฐ™์€ ๊ฐ’์„ ๊ฐ€์ง€๊ณ ์žˆ๋Š”์ง€ ๋น„๊ตํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— null์„ ๋ฆฌํ„ดํ•˜๊ฒŒ ๋œ๋‹ค. ๊ฐ์ฒด์˜ ๋™๋“ฑ์„ฑ์„ ๋น„๊ตํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

๋”ฐ๋ผ์„œ, ๋‘ ๊ฐ์ฒด์˜ ์ •ํ™•ํ•œ ๋น„๊ต๋ฅผ ์œ„ํ•ด์„œ๋Š” Object์˜ equals()์™€ hashCode()๋Š” ์žฌ์ •์˜ ํ•ด์•ผํ•œ๋‹ค.

ํŠนํžˆ, Hash ๊ด€๋ จ ์ปฌ๋ ‰์…˜์„ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ๋”๋”์šฑ ํ•ด์ค˜์•ผํ•œ๋‹ค.

circle-exclamation

์ฐธ๊ณ  ๋งํฌarrow-up-right

Last updated