hashCode ์ผ๋ฐ ๊ท์ฝ
- equals ๋น๊ต์์ ์ฌ์ฉ๋๋ ์ ๋ณด๊ฐ ๋ณ๊ฒฝ๋์ง ์์๋ค๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ์ด ์คํ๋๋ ๋์ ๊ทธ ๊ฐ์ฒด์ hashCode ๋ฉ์๋๋ ๋ช๋ฒ์ ํธ์ถํด๋ ์ผ๊ด๋๊ฒ ํญ์ ๊ฐ์ ๊ฐ์ ๋ฐํํด์ผ ํจ. ๋จ ์ดํ๋ฆฌ์ผ์ด์ ์ด ๋ค์ ์คํ๋๋ฉด ์๊ด์์
- euqlas(Object)๊ฐ ๋ ๊ฐ์ฒด๋ฅผ ๊ฐ๋ค๊ณ ํ๋จํ๋ค๋ฉด, ๋ ๊ฐ์ฒด์ hashCode๋ ๋๊ฐ์ ๊ฐ์ ๋ฐํํด์ผ ํจ
- equals(Object)๊ฐ ๋ ๊ฐ์ฒด๋ฅผ ๋ค๋ฅด๋ค๊ณ ํ๋จํ๋๋ผ๋, ๋ ๊ฐ์ฒด์ hashCode๊ฐ ์๋ก ๋ค๋ฅธ ๊ฐ์ ๋ฐํํ ํ์๋ ์๋ค. ๋จ, ๋ค๋ฅธ ๊ฐ์ฒด์ ๋ํด์๋ ๋ค๋ฅธ ๊ฐ์ ๋ฐํํด์ผ ํด์ํ ์ด๋ธ์ ์ฑ๋ฅ์ด ์ข์์ง๋ค.
hashCode ์ฌ์ ์๋ฅผ ์๋ชปํ์ ๋ ํฌ๊ฒ ๋ฌธ์ ๊ฐ ๋๋ ์กฐํญ์ ๋ ๋ฒ์งธ ์กฐํญ. ์ฆ, ๋
ผ๋ฆฌ์ ์ผ๋ก ๊ฐ์ ๊ฐ์ฒด๋ ๊ฐ์ ํด์์ฝ๋๋ฅผ ๋ฐํํด์ผ ํจ.
Map<PhoneNumber, String> m = new HashMap<>(); m.put(new PhoneNumber(707, 867, 5309), "์ ๋"); //์ดํ m.get(new PhoneNumber(707, 867, 5309) ์คํํ๋ฉด ์ ๋๊ฐ ๋์์ผ ํ ๊ฒ ๊ฐ์ง๋ง ์ค์ ๋ก // null ๋ฐํํจ
- ๋ ผ๋ฆฌ์ ์ผ๋ก๋ ๋์น์ธ ๋ ๊ฐ์ฒด๊ฐ hashCode๋ฅผ ์ฌ์ ์ํ์ง ์์๊ธฐ์ ์๋ก ๋ค๋ฅธ ํด์ฌ์ฝ๋๋ฅผ ๋ฐํํด์ ๋๋ฒ์งธ ๊ท์ฝ์ ์งํค์ง ๋ชปํ๊ฒ ๋ ๊ฒ์
hashCode ์์ฑ ๋ฐฉ๋ฒ์ ๋ํ ์ ๋ฆฌ.. ๋ ๋์ค์ ์ฐธ๊ณ ํ๊ธฐ ํ์ํ ๋
equals๋ฅผ ์ฌ์ ์ํ ๋๋ hashCode๋ ๋ฐ๋์ ์ฌ์ ์ํด์ผ ํจ. ๊ทธ๋ ์ง ์์ผ๋ฉด ํ๋ก๊ทธ๋จ์ด ์ ๋๋ก ๋์ํ์ง ์์ ๊ฒ. ์ฌ์ ์ํ hashCode๋ Object์ API ๋ฌธ์์ ๊ธฐ์ ๋ ์ผ๋ฐ ๊ท์ฝ์ ๋ฐ๋ผ์ผ ํ๋ฉฐ, ์๋ก ๋ค๋ฅธ ์ธ์คํด์ค๋ผ๋ฉด ๋๋๋ก ํด์์ฝ๋๋ ์๋ก ๋ค๋ฅด๊ฒ ๊ตฌํํด์ผ ํจ. ๊ทธ๋ฌ๋ ์๋์ผ๋ก ๋ง๋ค์ด์ค..