๊ณผ์ ํผ๋๋ฐฑ์ ๋ฐ์๋ค~
Objects.equals(a, b)์ ๊ถ์ฅํ๋ ์ด์
1. ์ด๋ค ์ปฌ๋ฝ๋ค์ ๋น๊ตํ๋์ง ๋ณด๊ธฐ ์ข๋ค.
a.equlas(b) ๋ณด๋ค Objects.equals(a,b)๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด a ์ปฌ๋ผ๊ณผ b ์ปฌ๋ผ์ ๋น๊ตํ๋ค๋ ๊ฒ์ ํ๋์ ํ์ธํ๊ธฐ ์ข๋ค.
2. NPE์ ์ทจ์ฝํ์ง ์๋ค.
Objects.equals ๋ฉ์๋๋ฅผ ๋ณด๋ฉด ๋น๊ต ๋์ ๊ฐ์ฒด a์ null ์ฒดํฌ๋ฅผ ํ๋ ๊ฒ์ ํ์ธ ํ equals ๋น๊ต๋ฅผ ํ๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
equals๊ณผ hashcode๋ฅผ ํจ๊ป ์ฌ ์ ์ํด์ผํ๋ ์ด์
- equals๋ง ์ฌ์ ์ํ์์ ๊ฒฝ์ฐ
public static void main(String[] args) {
var email1 = new Email("gg");
var email2 = new Email("gg");
System.out.println(email1 == email2); // true
System.out.println(email1.equals(email2)); // true
System.out.println(Objects.equals(email2,email1)); // ture
System.out.println(email1.hashCode() == email2.hashCode()); //false
System.out.println(email1.hashCode());
System.out.println(email2.hashCode());
var hashSet = new HashSet<>();
hashSet.add(email1);
hashSet.add(email2);
System.out.println(hashSet.size()); // 2
}
hashcode๋ฅผ equals ์ ์ฌ์ ์ํ์ง ์์ผ๋ฉด hash ๊ฐ์ ์ฌ์ฉํ๋ Collection(HashSet, HashMap, HashTable)์ ์ฌ์ฉํ ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.
- hashcode ์ฌ์ ์
public class Email {
private final String address;
public Email(String address) {
this.address = address;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Email email = (Email) o;
return Objects.equals(address, email.address);
}
@Override
public int hashCode() {
return Objects.hash(address);
}
}
intellJ ์๋์์ฑ์ ํ์ฉํ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์ฌ์ ์ ๋๋ ๊ฒ์ ๋ณผ ์ ์๋ค. ๊ฐํธํ๊ฒ ์ฌ์ฉ ๊ฐ๋ฅํ์ง๋ง ์๋๊ฐ ๋๋ ค ์ฑ๋ฅ์ ๋ฏผ๊ฐํ ๊ฒฝ์ฐ๋ผ๋ฉด ์ง์ ์ฌ์ ์ํด์ฃผ๋๊ฒ ์ข๋ค๊ณ ํ๋ค. → https://www.baeldung.com/java-hashcode
์๋ชป๋ ์ ๋ณด๊ฐ ์๋ค๋ฉด ๋๊ธ์ ํตํด ์๋ ค์ฃผ์ธ์. ๊ฐ์ฌํฉ๋๋ค.
reference.
https://tecoble.techcourse.co.kr/post/2020-07-29-equals-and-hashCode/
'Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Java์ ๋๋ค (Lambda) (0) | 2022.10.31 |
---|---|
JUnit ์ฌ์ฉ๊ธฐ (feat. IntelliJ) (0) | 2022.10.26 |
๋๊ธ