CodeGym /Java Blog /๋ฌด์ž‘์œ„์˜ /์ž๋ฐ” ํ•ด์‹œ์ฝ”๋“œ()
John Squirrels
๋ ˆ๋ฒจ 41
San Francisco

์ž๋ฐ” ํ•ด์‹œ์ฝ”๋“œ()

๋ฌด์ž‘์œ„์˜ ๊ทธ๋ฃน์— ๊ฒŒ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค

ํ•ด์‹œ ์›๋ฆฌ

๋จผ์ € Java ํ•ด์‹œ์ฝ”๋“œ๋ฅผ ์ •์˜ํ•˜๊ธฐ ์ „์— ํ•ด์‹ฑ์ด ๋ฌด์—‡์ด๋ฉฐ ์šฉ๋„๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์ดํ•ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ•ด์‹ฑ์€ ์ผ๋ถ€ ๋ฐ์ดํ„ฐ์— ํ•ด์‹œ ํ•จ์ˆ˜๋ฅผ ์ ์šฉํ•˜๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค. ํ•ด์‹œ ํ•จ์ˆ˜๋Š” ์ˆ˜ํ•™ ํ•จ์ˆ˜์ผ ๋ฟ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์— ๋Œ€ํ•ด ๊ฑฑ์ •ํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค! "์ˆ˜ํ•™"์ด ํ•ญ์ƒ "๋ณต์žกํ•จ"์„ ์˜๋ฏธํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ฌธ์ž ์ง‘ํ•ฉ(์ฝ”๋“œ)์œผ๋กœ ๋งคํ•‘ํ•˜๋Š” ํŠน์ • ๊ทœ์น™๊ณผ ์ผ๋ถ€ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด 16์ง„์ˆ˜ ์•”ํ˜ธ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž…๋ ฅ์— ์ž„์˜์˜ ํฌ๊ธฐ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๊ณ  ์—ฌ๊ธฐ์— ํ•ด์‹œ ํ•จ์ˆ˜๋ฅผ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ถœ๋ ฅ์—์„œ ๊ณ ์ • ํฌ๊ธฐ ๋ฐ์ดํ„ฐ(์˜ˆ: 32์ž)๋ฅผ ์–ป์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์ด๋Ÿฌํ•œ ์ข…๋ฅ˜์˜ ํ•จ์ˆ˜๋Š” ํฐ ๋ฐ์ดํ„ฐ ์กฐ๊ฐ์„ ์ž‘์€ ์ •์ˆ˜ ๊ฐ’์œผ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ด ํ•จ์ˆ˜ ์ž‘์—…์˜ ๊ฒฐ๊ณผ๋ฅผ ํ•ด์‹œ ์ฝ”๋“œ๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ํ•ด์‹œ ํ•จ์ˆ˜๋Š” ์•”ํ˜ธํ™” ๋ฐ ์ผ๋ถ€ ๋‹ค๋ฅธ ์˜์—ญ์—์„œ๋„ ๋„๋ฆฌ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ํ•ด์‹œ ํ•จ์ˆ˜๋Š” ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํŠน์ • ๊ฐœ์ฒด์—๋Š” ํŠน์ • ํ•ด์‹œ ์ฝ”๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋‘ ๊ฐœ์ฒด๊ฐ€ ๊ฐ™์œผ๋ฉด ํ•ด๋‹น ํ•ด์‹œ ์ฝ”๋“œ๊ฐ€ ๋™์ผํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ๋ฐ˜๋Œ€๋Š” ์‚ฌ์‹ค์ด ์•„๋‹™๋‹ˆ๋‹ค.
  • ํ•ด์‹œ ์ฝ”๋“œ๊ฐ€ ๋‹ค๋ฅด๋ฉด ๊ฐœ์ฒด๊ฐ€ ํ™•์‹คํžˆ ๊ฐ™์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ๋‹ค๋ฅธ ๊ฐœ์ฒด๋Š” ๋™์ผํ•œ ํ•ด์‹œ ์ฝ”๋“œ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋งค์šฐ ๊ฐ€๋Šฅ์„ฑ์ด ๋‚ฎ์€ ์ด๋ฒคํŠธ์ž…๋‹ˆ๋‹ค. ์ด ์‹œ์ ์—์„œ ์šฐ๋ฆฌ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์žƒ์„ ์ˆ˜ ์žˆ๋Š” ์ถฉ๋Œ, ์ƒํ™ฉ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
"์ ์ ˆํ•œ" ํ•ด์‹œ ํ•จ์ˆ˜๋Š” ์ถฉ๋Œ ๊ฐ€๋Šฅ์„ฑ์„ ์ตœ์†Œํ™”ํ•ฉ๋‹ˆ๋‹ค.

์ž๋ฐ”์˜ ํ•ด์‹œ์ฝ”๋“œ

Java์—์„œ ํ•ด์‹œ ํ•จ์ˆ˜๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ hashCode() ๋ฉ”์„œ๋“œ ์— ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค . ์ •ํ™•ํžˆ๋Š” Object์— ํ•ด์‹œ ํ•จ์ˆ˜๋ฅผ ์ ์šฉํ•œ ๊ฒฐ๊ณผ๊ฐ€ ํ•ด์‹œ ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค. ๋ชจ๋“  Java ๊ฐ์ฒด์—๋Š” ํ•ด์‹œ ์ฝ”๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ํ•ด์‹œ ์ฝ”๋“œ๋Š” ํด๋ž˜์Šค ์˜ hashCode() ๋ฉ”์„œ๋“œ ์— ์˜ํ•ด ๊ณ„์‚ฐ๋˜๋Š” ์ˆซ์ž์ž…๋‹ˆ๋‹ค Object. ์ผ๋ฐ˜์ ์œผ๋กœ ํ”„๋กœ๊ทธ๋ž˜๋จธ๋Š” ๊ฐ์ฒด์— ๋Œ€ํ•ด ์ด ๋ฉ”์„œ๋“œ๋ฅผ ์žฌ์ •์˜ํ•˜๊ณ  ํŠน์ • ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‹ค ํšจ์œจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด hashCode() equals () ๋ฉ”์„œ๋“œ ์™€ ๊ด€๋ จ๋ฉ๋‹ˆ๋‹ค . hashCode () ๋ฉ”์„œ๋“œ๋Š” ๊ฐœ์ฒด์˜ ์ˆซ์ž ํ‘œํ˜„์ธ int(4๋ฐ”์ดํŠธ) ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ด ํ•ด์‹œ ์ฝ”๋“œ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‹ค ํšจ์œจ์ ์œผ๋กœ ์ €์žฅํ•˜๊ณ  ๊ทธ์— ๋”ฐ๋ผ ๋ฐ์ดํ„ฐ์— ๋” ๋น ๋ฅด๊ฒŒ ์•ก์„ธ์Šคํ•˜๊ธฐ ์œ„ํ•ด ์ปฌ๋ ‰์…˜์—์„œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ hashCode()๊ฐœ์ฒด์— ๋Œ€ํ•œ ํ•จ์ˆ˜๋Š” ๊ฐœ์ฒด๊ฐ€ ์ €์žฅ๋œ ๋ฉ”๋ชจ๋ฆฌ ์…€์˜ ๋ฒˆํ˜ธ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ํ•จ์ˆ˜๋Š” ๋™์ผํ•œ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฝ”๋“œ๊ฐ€ ์•ฝ๊ฐ„ ๋ณ€๊ฒฝ๋˜๋ฉด ํ•ด์‹œ์ฝ”๋“œ ๊ฐ’๋„ ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๋‹ค. Java์—์„œ ์‚ฌ์šฉ๋˜๋Š” ํ•ด์‹œ ์ฝ”๋“œ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์šฐ์„  Java ํ•ด์‹œ์ฝ”๋“œ๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ๋” ๋น ๋ฅด๊ฒŒ ์‹คํ–‰๋˜๋„๋ก ๋„์™€์ค๋‹ˆ๋‹ค. o1์˜ˆ๋ฅผ ๋“ค์–ด ์–ด๋–ค ์œ ํ˜• ์˜ ๋‘ ๊ฐœ์ฒด๋ฅผ ๋น„๊ตํ•˜๋ฉด o2์ž‘์—…์— o1.equals(o2)20๋ฐฐ ์ •๋„ ๋” ๋งŽ์€ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค o1.hashCode() == o2.hashCode().

์ž๋ฐ” equals()

๋ถ€๋ชจ ํด๋ž˜์Šค์—๋Š” hashCode()Object ๋ฉ”์„œ๋“œ ์™€ ํ•จ๊ป˜ ๋‘ ๊ฐœ์ฒด์˜ ๋™๋“ฑ์„ฑ์„ ํ™•์ธํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ํ•จ์ˆ˜์ธ equals() ๋„ ์žˆ์Šต๋‹ˆ๋‹ค . ์ด ํ•จ์ˆ˜์˜ ๊ธฐ๋ณธ ๊ตฌํ˜„์€ ๋‹จ์ˆœํžˆ ๋‘ ๊ฐœ์ฒด์˜ ๋งํฌ๊ฐ€ ๋™์ผํ•œ์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. equals() ๋ฐ hashCode() ์—๋Š” ๊ณ„์•ฝ์ด ์žˆ์œผ๋ฏ€๋กœ ๋‘˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ์žฌ์ •์˜ํ•˜๋Š” ๊ฒฝ์šฐ ์ด ๊ณ„์•ฝ์„ ์œ„๋ฐ˜ํ•˜์ง€ ์•Š์œผ๋ ค๋ฉด ๋‹ค๋ฅธ ํ•˜๋‚˜๋ฅผ ์žฌ์ •์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

hashCode() ๋ฉ”์„œ๋“œ ๊ตฌํ˜„

์˜ˆ

์ด๋ฆ„ ์ด๋ผ๋Š” ํ•˜๋‚˜์˜ ํ•„๋“œ๊ฐ€ ์žˆ๋Š” Character ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค์–ด ๋ด…์‹œ๋‹ค . ๊ทธ๋Ÿฐ ๋‹ค์Œ Character ํด๋ž˜์Šค์˜ ๋‘ ๊ฐœ์ฒด์ธ character1 ๊ณผ character2 ๋ฅผ ๋งŒ๋“ค๊ณ  ๋™์ผํ•œ ์ด๋ฆ„์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. Object ํด๋ž˜์Šค ์˜ ๊ธฐ๋ณธ hashCode() ๋ฐ equals()๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋™์ผํ•œ ๊ฐ์ฒด๊ฐ€ ์•„๋‹ˆ๋ผ ํ™•์‹คํžˆ ๋‹ค๋ฅธ ๊ฐ์ฒด๋ฅผ ์–ป๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด Java์˜ ํ•ด์‹œ์ฝ”๋“œ๊ฐ€ ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ์„œ๋กœ ๋‹ค๋ฅธ ๋ฉ”๋ชจ๋ฆฌ ์…€์— ์žˆ๊ณ  equals() ์—ฐ์‚ฐ ๊ฒฐ๊ณผ๊ฐ€ false์ด๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋กœ ๋‹ค๋ฅธ ํ•ด์‹œ์ฝ”๋“œ๋ฅผ ๊ฐ–๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

import java.util.Objects;

public class Character {
    private String Name;

    public Character(String name) {
        Name = name;
    }

    public String getName() {
        return Name;
    }

    public void setName(String name) {
        Name = name;
    } 

    public static void main(String[] args) {
        Character character1 = new Character("Arnold");
        System.out.println(character1.getName());
        System.out.println(character1.hashCode());
        Character character2 = new Character("Arnold");
        System.out.println(character2.getName());
        System.out.println(character2.hashCode());
        System.out.println(character2.equals(character1));
    }
}
ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ๊ฒฐ๊ณผ:

Arnold
1595428806
Arnold
1072408673
false
์ฝ˜์†”์— ์žˆ๋Š” ๋‘ ๊ฐœ์˜ 10์ž๋ฆฌ ์ˆซ์ž๋Š” ํ•ด์‹œ ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค. ์ด๋ฆ„์ด ๊ฐ™์€ ๊ฒฝ์šฐ ๋™์ผํ•œ ๊ฐœ์ฒด๋ฅผ ๊ฐ–๊ณ  ์‹ถ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? ๋‹ต: Character ํด๋ž˜์Šค ์— ๋Œ€ํ•ด Object ํด๋ž˜์Šค์˜ hashCode() ๋ฐ equals() ๋ฉ”์„œ๋“œ๋ฅผ ์žฌ์ •์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค . IDEA IDE์—์„œ ์ž๋™์œผ๋กœ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ‚ค๋ณด๋“œ์—์„œ alt + insert๋ฅผ ๋ˆ„๋ฅด๊ณ  Generate -> equals() ๋ฐ hashCode()๋ฅผ ์„ ํƒํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค . ์ด ์˜ˆ์ œ์˜ ๊ฒฝ์šฐ ๋‹ค์Œ ์ฝ”๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. Java hashCode()๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ - 2

import java.util.Objects;

public class Character {
    private String Name;

    public Character(String name) {
        Name = name;
    }

    public String getName() {
        return Name;
    }

    public void setName(String name) {
        Name = name;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (!(o instanceof Character)) return false;

        Character character = (Character) o;

        return getName() != null ? getName().equals(character.getName()) : character.getName() == null;
    }

    @Override
    public int hashCode() {
        return getName() != null ? getName().hashCode() : 0;
    }

    public static void main(String[] args) {
        Character character1 = new Character("Arnold");
        System.out.println(character1.getName());
        System.out.println(character1.hashCode());
        Character character2 = new Character("Arnold");
        System.out.println(character2.getName());
        System.out.println(character2.hashCode());
        System.out.println(character2.equals(character1));
    }
}
์ด ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•œ ๊ฒฐ๊ณผ:

Arnold
1969563338
Arnold
1969563338
true
์ด์ œ ํ”„๋กœ๊ทธ๋žจ์€ ๊ฐ์ฒด๋ฅผ ๋™์ผํ•˜๋‹ค๊ณ  ์‹๋ณ„ํ•˜๊ณ  ๋™์ผํ•œ ํ•ด์‹œ ์ฝ”๋“œ๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค.

์ž๋ฐ” ํ•ด์‹œ์ฝ”๋“œ ์˜ˆ:

๋‚˜๋งŒ์˜ hashCode() ๋ฐ equals()

๊ณ ์œ ํ•œ equals() ๋ฐ hashCode() ๊ตฌํ˜„์„ ๋งŒ๋“ค ์ˆ˜๋„ ์žˆ์ง€๋งŒ ์ฃผ์˜ํ•˜๊ณ  ํ•ด์‹œ์ฝ”๋“œ ์ถฉ๋Œ์„ ์ตœ์†Œํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ์€ Student ํด๋ž˜์Šค์— ์žˆ๋Š” ๊ณ ์œ ํ•œ hashCode() ๋ฐ equals() ๋ฉ”์„œ๋“œ ์˜ ์˜ˆ์ž…๋‹ˆ๋‹ค .

import java.util.Date;

public class Student {
   String surname;
   String name;
   String secondName;
   Long birthday; // Long instead of long is used by Gson/Jackson json parsers and various orm databases

   public Student(String surname, String name, String secondName, Date birthday ){
       this.surname = surname;
       this.name = name;
       this.secondName = secondName;
       this.birthday = birthday == null ? 0 : birthday.getTime();
   }
//Java hashcode example
   @Override
   public int hashCode(){
       //TODO: check for nulls
       //return surname.hashCode() ^ name.hashCode() ^ secondName.hashCode() ^ (birthday.hashCode());
       return (surname + name + secondName + birthday).hashCode();
   }
   @Override
   public boolean equals(Object other_) {
       Student other = (Student)other_;
       return (surname == null || surname.equals(other.surname) )
               && (name == null || name.equals(other.name))
               && (secondName == null || secondName.equals(other.secondName))
               && (birthday == null || birthday.equals(other.birthday));
   }
}
๊ทธ๋ฆฌ๊ณ  ์ž‘์—…์„ ์‹œ์—ฐํ•˜๋Š” Main ํด๋ž˜์Šค:

import java.util.Date;
import java.util.HashMap;
import java.util.Hashtable;

public class Main {
   static HashMap<Student, Integer> cache = new HashMap<Student, Integer>(); // <person, targetPriority>

   public static void main(String[] args) {
       Student sarah1 = new Student("Sarah","Connor", "Jane", null);
       Student sarah2 = new Student("Sarah","Connor", "Jane", new Date(1970, 01-1, 01));
       Student sarah3 = new Student("Sarah","Connor", "Jane", new Date(1959, 02-1, 28)); // date not exists
       Student john = new Student("John","Connor", "Kyle", new Date(1985, 02-1, 28)); // date not exists
       Student johnny = new Student("John","Connor", "Kyle", new Date(1985, 02-1, 28)); // date not exists
       System.out.println(john.hashCode());
       System.out.println(johnny.hashCode());
       System.out.println(sarah1.hashCode());
       System.out.println();
       cache.put(sarah1, 1);
       cache.put(sarah2, 2);
       cache.put(sarah3, 3);
       System.out.println(new Date(sarah1.birthday));
       System.out.println();
       cache.put(john, 5);
       System.out.println(cache.get(john));
       System.out.println(cache.get(johnny));
       cache.put(johnny, 7);
       System.out.println(cache.get(john));
       System.out.println(cache.get(johnny));
   }
}

ํ•ด์‹œ์ฝ”๋“œ๋Š” ๋ฌด์—‡์— ์‚ฌ์šฉ๋˜๋‚˜์š”?

์šฐ์„  ๋ชจ๋“  ํ•ด์‹œ์ฝ”๋“œ๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ๋” ๋นจ๋ฆฌ ์‹คํ–‰๋˜๋„๋ก ๋„์™€์ค๋‹ˆ๋‹ค. o1์˜ˆ๋ฅผ ๋“ค์–ด ์–ด๋–ค ์œ ํ˜• ์˜ ๋‘ ๊ฐœ์ฒด๋ฅผ ๋น„๊ตํ•˜๋ฉด o2์ž‘์—…์— o1.equals(o2)o1.hashCode() == o2.hashCode()๋ณด๋‹ค ์•ฝ 20๋ฐฐ ๋” ๋งŽ์€ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค. Java์—์„œ ํ•ด์‹ฑ ์›์น™์€ HashMap , HashSet ๋ฐ HashTable ๊ณผ ๊ฐ™์€ ์ผ๋ถ€ ์ธ๊ธฐ ์žˆ๋Š” ์ปฌ๋ ‰์…˜ ๋’ค์— ์žˆ์Šต๋‹ˆ๋‹ค .

๊ฒฐ๋ก 

๋ชจ๋“  Java ๊ฐ์ฒด์—๋Š” Object ํด๋ž˜์Šค ์—์„œ ์ƒ์†๋œ hashCode() ๋ฐ equals() ๋ฉ”์„œ๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜๋Š” ํ‰๋“ฑ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์–ป์œผ๋ ค๋ฉด ์ž์‹ ์˜ ํด๋ž˜์Šค์— ๋Œ€ํ•ด hashcode() ๋ฐ equals() ๋ฉ”์„œ๋“œ๋ฅผ ์žฌ์ •์˜ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค . ํ•ด์‹œ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ”„๋กœ๊ทธ๋žจ์ด ๋” ๋น ๋ฅด๊ฒŒ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.
์ฝ”๋ฉ˜ํŠธ
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION