equals() & hashCode()
๋ ๋ฉ์๋๋ ์ ๊ฐ์ด ์ฌ์ ์ ํด์ผํ ๊น?
๋๋ฑ์ฑ : ๊ฐ์ฒด๊ฐ ์ฃผ์๊ฐ์ด ๋ฌ๋ผ๋ ๋ด์ฉ(ํ๋๊ฐ)์ด ๊ฐ๋ค๋ฉด ๊ฐ๋ค๊ณ ๋ณด๋๊ฒ, equals()
๋์ผ์ฑ : ๊ฐ์ฒด๊ฐ ์ฃผ์๊ฐ์ด ๋ค๋ฅด๋ฉด ์๋ฌด๋ฆฌ ๊ฐ์ ๋ด์ฉ์ด๋ผ๋ ๊ฐ๋ค๊ณ ๋ณด์ง ์์, ==
๋ ๊ฐ์ฒด์ ํ๋๊ฐ๊ณผ ํด์ฌ๊ฐ์ ๋๋ฑ์ฑ๊ณผ ๋์ผ์ฑ์ ๋น๊ตํ ๋ ์ค๋ฒ๋ผ์ด๋ฉ ํด์ ์ฌ์ฉํ๋ค.
์ equals()๋ง ์ค๋ฒ๋ผ์ด๋ฉ ํ๋ฉด ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋์ง์ ๋ํด์ ๋ค์ ๊ณต๋ถํด์ผ๊ฒ ๋ค.
์ ๊ฐ์ด ์ค๋ฒ๋ผ์ด๋ฉ ํด์ผ๋ ๊น?
๋ง์ฝ eqauls()๋ง ์ฌ์ ์ ํ๋ค๋ฉด ํ๋๊ฐ(value)๊ฐ ๊ฐ์๋ hashCode๋ ๊ฐ์ง ์๋ค.
๋ฐ๋ผ์ hashTable๊ณผ ๊ฐ์ ์๋ฃ๊ตฌ์กฐ์์ ๊ทธ ๊ฐ์ฒด๋ฅผ putํ ์ํ์์ ํด๋น ๊ฐ์ฒด๊ฐ ์ ์ฅ๋ ๋ฒํท์ ์ฐพ์ ์ ์๋ค. (key๊ฐ์ hashCode๋ก ์ค์ ํ๊ธฐ ๋๋ฌธ์ด๋ค. ๋ฒํท์ ํด์ฌ ํ ์ด๋ธ์์ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋ ๊ณณ์ด๋ค.)
๋ฐ๋๋ก hashCode()๋ง ์ฌ์ ์ ํ๋ค๋ฉด hash๊ฐ์ ์ด์ฉํด์ ๊ฐ์ฒด๊ฐ ์ ์ฅ๋ ๋ฒํท์ ์ฐพ์ ์ ์๊ฒ ์ง๋ง, ํด๋น ๊ฐ์ฒด๊ฐ ์์ ๊ณผ ๊ฐ์ ๊ฐ์ ๊ฐ์ง๊ณ ์๋์ง ๋น๊ตํ ์ ์๊ธฐ ๋๋ฌธ์ null์ ๋ฆฌํดํ๊ฒ ๋๋ค. ๊ฐ์ฒด์ ๋๋ฑ์ฑ์ ๋น๊ตํ ์ ์๋ค๋ ๊ฒ์ด๋ค.
๋ฐ๋ผ์, ๋ ๊ฐ์ฒด์ ์ ํํ ๋น๊ต๋ฅผ ์ํด์๋ Object์ equals()์ hashCode()๋ ์ฌ์ ์ ํด์ผํ๋ค.
ํนํ, Hash ๊ด๋ จ ์ปฌ๋ ์ ์ ์ฌ์ฉํ ๋๋ ๋๋์ฑ ํด์ค์ผํ๋ค.
๋์ผ ๊ฐ์ฒด์ ์ ์๋ฅผ ์ํด์๋ hashCode()์ equals()๋ฉ์๋ ์ค๋ฒ๋ผ์ด๋ฉ ํ์ํ๋ค. (Object ํด๋์ค์ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ง ์๊ฒ ๋ค๋ ์๋ฏธ์ด๋ค.)
Last updated