๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Java

[Java] a.equlas(b)๋ณด๋‹ค๋Š” Object.equlas(a,b) ์‚ฌ์šฉํ•˜๊ธฐ

by young-ji 2022. 12. 1.

 

๊ณผ์ œ ํ”ผ๋“œ๋ฐฑ์„ ๋ฐ›์•˜๋‹ค~

 

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

๋Œ“๊ธ€