โ equals()
- java.lang.Object ํด๋์ค์ ์ ์๋์ด ์๋ค.
package java.lang;
...
public class Object {
...
public boolean equals(Object obj) {
return (this == obj);
}
...
}
- ๋ชจ๋ ์๋ฐ ๊ฐ์ฒด๋ผ๋ฆฌ ๋๋ฑ์ฑ์ผ์ ํ๋จํ ์ ์๋๋ก, ์ต์์ ํด๋์ค์ธ Object์ ์ ์๋์ด ์๋ ๋ฉ์๋์ด๋ค.
(๋๋ฑ์ฑ์ด๋? ๋ ๊ฐ์ฒด๊ฐ ๋ ผ๋ฆฌ์ ์ผ๋ก ๋์ผํ ๊ฒ์ ๋งํ๋ค. ๐[Java] ๋์ผ์ฑ, ๋๋ฑ์ฑ)
- ์ฐธ์กฐ๊ฐ์ ๊ธฐ๋ฐ์ผ๋ก ๋๋ฑ์ฑ์ ํ๋จํ๋๋ก ๊ตฌํ๋์ด ์๋ค.
- ๋ค์ ๋งํด, ๋ ๊ฐ์ฒด์ ์ฐธ์กฐ๊ฐ์ด ๊ฐ์ผ๋ฉด(๋ฌผ๋ฆฌ์ ์ผ๋ก ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ฐ๋ฆฌํค๋ฉด) true๋ฅผ ๋ฆฌํดํ๋ค.
- ๋ ๊ฐ์ฒด๊ฐ ๋ ผ๋ฆฌ์ ์ผ๋ก ๋์ผํ์ง ํ๋จํ๋ ๊ธฐ์ค์ ํด๋์ค๋ง๋ค ๋ค๋ฅด๊ธฐ ๋๋ฌธ์,
ํ์ํ๋ค๋ฉด ์ด equals() ๋ฉ์๋๋ฅผ ์ฌ์ ์(override)ํด์ฃผ์ด์ผ ํ๋ค.
- String ํด๋์ค, ๊ธฐ๋ณธ์๋ฃํ Wrapper ํด๋์ค๋ค(Integer, Double ๋ฑ..), Data ํด๋์ค, File ํด๋์ค์๋
equals() ๋ฉ์๋๊ฐ ์ค๋ฒ๋ผ์ด๋ฉ ๋์ด ์๋ค.
- StringBuffer ํด๋์ค์๋ ์ค๋ฒ๋ผ์ด๋ฉ ๋์ด ์์ง ์๋ค.
โ hashCode()
- java.lang.Object ํด๋์ค์ ์ ์๋์ด ์๋ค.
package java.lang;
...
public class Object {
...
public native int hashCode();
...
}
- ๋ชจ๋ ํ์ ์ ๊ฐ์ฒด๋ฅผ ์ฑ๋ฅ์ด ์ข์ ํด์ ์๋ฃ๊ตฌ์กฐ์ ์ ์ฅํ ์ ์๋๋ก, ์ต์์ ํด๋์ค์ธ Object ํด๋์ค์ ์ ์๋์ด ์๋ ๊ธฐ๋ณธ ํด์ ํจ์์ด๋ค.
ํด์ํจ์๋, ์์์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฅ๋ฐ์ ๊ณ ์ ๋ ๊ธธ์ด์ ํด์๊ฐ์ ๋ฆฌํดํ๋ ํจ์์ด๋ค.
- ๊ฐ์ฒด์ ์ฐธ์กฐ๊ฐ์ ๊ธฐ๋ฐ์ผ๋ก ํด์๊ฐ์ ์์ฑํ๋ค.
๐ฅ Objects.hash()
- java.util.Objects ํด๋์ค๋ hash() ๋ฉ์๋๋ฅผ ์ ๊ณตํ๋ค.
- ์ด ๋ฉ์๋๋ ํ ๊ฐ ์ด์์ ์ ๋ ฅ๊ฐ์ ๊ธฐ๋ฐ์ผ๋ก ํด์๊ฐ์ ์์ฑํ์ฌ ๋ฆฌํดํ๋ค.
โ equals() ์ hashCode()๋ฅผ ํจ๊ป ์ค๋ฒ๋ผ์ด๋ฉ ํด์ผ ํ๋ ์ด์
์ผ๋ฐ์ ์ผ๋ก equals ๋ฉ์๋์ hashCode ๋ฉ์๋๋ฅผ ํจ๊ป ์ค๋ฒ๋ผ์ด๋ฉ ํ๋ ๊ฒ์ด ์์น์ด๋ค.
ํนํ ์๋ฐ์ ํด์ ๊ธฐ๋ฐ ์๋ฃ๊ตฌ์กฐ์ ์ ์ฅํ ๊ฐ์ฒด๋ผ๋ฉด ๋ฐ๋์ hashCode() ๋ฉ์๋๋ฅผ ์ค๋ฒ๋ผ์ด๋ฉํด์ผ ํ๋ค.
- ์๋ํ๋ฉด, ์๋ฐ ์ปฌ๋ ์ ์ ํด์ ์๋ฃ๊ตฌ์กฐ์์๋ ํด์ํจ์๋ก ์ด hashCode() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ด๋ค.
- ๋ง์ฝ equals()๋ง ์ฌ์ ์ํ๊ณ hashCode()๋ ์ฌ์ ์ํ์ง ์์ ๊ฐ์ฒด๋ฅผ ํด์ ์๋ฃ๊ตฌ์กฐ์์ ์ฌ์ฉํ๋ค๋ฉด,
hashCode()๋ ๊ฐ์ฒด์ ์ฐธ์กฐ๊ฐ์ ๊ธฐ๋ฐ์ผ๋ก ์์ฑ๋ ๊ฒ์ด๋ค.
- ๊ทธ ๊ฒฐ๊ณผ ๋ ผ๋ฆฌ์ ์ผ๋ก ๊ฐ์ ๋ ๊ฐ์ฒด๊ฐ ์๋ก ๋ค๋ฅธ ํด์๊ฐ์ ๋ฐํํ๊ฒ ๋ ๊ฒ์ด๊ณ ,
ํด์ ์๋ฃ๊ตฌ์กฐ์์ ์๋ํ์ง ์์ ๋์์ด ๋ฐ์ํ ์ ์๋ค. (๊ฐ์ฒด๊ฐ ์ค๋ณต ์ ์ฅ๋๊ฑฐ๋, ๊ฒ์์ ํ ์ ์๊ฑฐ๋ ๋ฑ)
- ๋ง์ฝ hashCode()๋ง ์ฌ์ ์ํ๊ณ equals()๋ ์ฌ์ ์ํ์ง ์์ ๊ฐ์ฒด๋ฅผ ํด์ ์๋ฃ๊ตฌ์กฐ์์ ์ฌ์ฉํ๋ค๋ฉด,
ํด์ ์ธ๋ฑ์ค ์ถฉ๋์ด ๋ฐ์ํ ๊ฒฝ์ฐ ์๋ํ์ง ์์ ๋์์ด ๋ฐ์ํ ์ ์๋ค.
- ํด์ ์ธ๋ฑ์ค๊ฐ ์ถฉ๋ํ ๊ฒฝ์ฐ, ๊ฐ์ ํด์ ์ธ๋ฑ์ค์ ์๋ ๊ฐ์ฒด๋ค์ equals() ๋ฉ์๋๋ฅผ ์ด์ฉํ์ฌ ํ๋ํ๋ ๋น๊ตํ๋ฉฐ ๊ฒ์ํ๊ธฐ ๋๋ฌธ์ด๋ค.
- equals() ๋ฅผ ์ฌ์ ์ํ์ง ์์ผ๋ฉด, ๊ฐ์ฒด์ ์ฐธ์กฐ๊ฐ์ ๊ธฐ๋ฐ์ผ๋ก ๋๋ฑ์ฑ ์ฌ๋ถ๋ฅผ ํ๋จํ๋ฏ๋ก ๊ฐ์ฒด ๊ฒ์์ ์คํจํ ์ ์๋ค.
โ Reference
- ์๋ฐ์ ์ ์ (๋จ๊ถ์ฑ)
'๊ฐ์ธ ๊ณต๋ถ > Java, Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Java] ๋์ผ์ฑ, ๋๋ฑ์ฑ (0) | 2024.06.26 |
---|---|
[Java] Reflection (0) | 2023.11.17 |
[Java] BlockingQueue (0) | 2023.10.18 |
[Java] Java TCP socket programming (0) | 2023.09.19 |
[Java] ์๋ฐ ๋ก๊น (Logging) (0) | 2023.09.06 |