Study/cs (computer science)

equals() ์™€ hashCode() ๋™์ผ์„ฑ๊ณผ ๋™๋“ฑ์„ฑ, ์™„์ „๋ฒ”์ฃ„ํ•˜๊ธฐ

๊ฐœ๋ฐœํ•˜๋Š” ์ฃผ๋””์”จ 2023. 10. 31. 23:43

 

์ž๋ฐ”์˜ ๋ชจ๋“  ํด๋ž˜์Šค๋Š” Object ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›์Šต๋‹ˆ๋‹ค.
๊ทธ๋ฆฌ๊ณ  Objectํด๋ž˜์Šค์—๋Š” equals() ์™€ hashCode() ๋ผ๋Š” ๋ฉ”์†Œ๋“œ๊ฐ€ ์„ ์–ธ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ฉ”์†Œ๋“œ๋“ค์€ ๊ฐ๊ฐ ์–ด๋–ค ์—ญํ• ์ผ๊นŒ์š”? ์ด ๋‘˜์˜ ์ฐจ์ด์ ์€ ๋ฌด์—‡์ผ๊นŒ์š”?

 

 

equals()์™€ hashCode() ๋ฉ”์„œ๋“œ๋Š” ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ์ค‘์š”ํ•œ ๋ฉ”์„œ๋“œ๋กœ, ๊ฐ์ฒด ๊ฐ„์˜ ๋™์ผ์„ฑ๊ณผ ๋™๋“ฑ์„ฑ์„ ๋‹ค๋ฃจ๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

 

 

 

๋“ค์–ด๊ฐ€๊ธฐ ์ „์—

๋™์ผ์„ฑ์€ Identity = ๋ฉ”๋ชจ๋ฆฌ ๋‚ด ์ฃผ์†Œ๊ฐ’์ด ๊ฐ™์€์ง€ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค.
๋™๋“ฑ์„ฑ์€ Equality = ๋…ผ๋ฆฌ์  ์ง€์œ„๊ฐ€ ๋™๋“ฑํ•œ์ง€ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ๋“ค์–ด, ์• ํ”Œ ๏ฃฟ ์•„์ดํฐ์ด 2๋Œ€์žˆ๋‹ค. ๋‘ ํœด๋Œ€ํฐ์€ ๊ธฐ์ข…๋„ ๊ฐ™๊ณ  ๋™์ผํ•œ ์ƒ‰์ƒ ๋™์ผํ•œ ์ŠคํŽ™์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ์ด ๋‘ ๊ฐœ์˜ ํœด๋Œ€ํฐ์€ ๋™์ผํ•œ๊ฐ€?

๋‹ต์€ ์•„๋‹ˆ๋‹ค. ํœด๋Œ€ํฐ์€ ๊ฐ ๊ธฐ๊ธฐ๋งˆ๋‹ค ๊ณ ์œ  ์ฃผ์†Œ๊ฐ€ ์žˆ๊ณ  ์•„์ดํฐ์€ MAC ์ฃผ์†Œ๊ฐ€ ์กด์žฌํ•œ๋‹ค. ์ฆ‰, ๋™์ผํ•œ ์ŠคํŽ™์ด์ง€๋งŒ ์—„์—ฐํžˆ ๋‘ ๊ธฐ๊ธฐ๋Š” ๊ฐ์ž ์œ ๋‹ˆํฌํ•œ ํŠน์„ฑ์„ ๊ฐ–๊ณ  ์žˆ๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค. (= ๋™์ผํ•˜์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ)

์ด๋ฒˆ์—๋Š” ๊ทธ๋Ÿผ ๋™๋“ฑํ•œ๊ฐ€? ๋‹ต์€ ๊ทธ๋ ‡๋‹ค. ์‚ฌํšŒ์ ์œผ๋กœ ๋™์ผํ•œ ์ŠคํŽ™๊ณผ ์‹ฌ์ง€์–ด๋Š” ์ปฌ๋Ÿฌ๊ฐ€ ๋‹ฌ๋ผ๋„ ์ŠคํŽ™์ด ๋™์ผํ•œ ๊ฐ™์€ ์‹œ๋ฆฌ์ฆˆ์˜ ๊ธฐ๊ธฐ๋ผ๋ฉด ๊ฐ™์€ ํœด๋Œ€ํฐ์ด๋ผ๊ณ  ๋งํ•œ๋‹ค. "์ด๊ฑด ์•„์ดํฐ15 ๋ธ”๋ฃจ์•ผ", "์ด๊ฑด ์•„์ดํฐ15 ๊ทธ๋ฆฐ์ด์•ผ" ์ด๋ ‡๊ฒŒ ๋งํ•˜์ง€ ์•Š์ž–์•„์š”..? ๊ทธ๋ƒฅ "์‘ ์•„์ดํฐ 15~", "์‘ ์•„์ดํฐ 15ํ”„๋กœ~" ์ด์ •๋„๋กœ๋งŒ ๊ตฌ๋ถ„ํ•œ๋‹ค. ๋ฐ”๋กœ ๊ทธ ์ด์œ ๋Š” ์‚ฌํšŒ์ ์œผ๋กœ ๋‘ ๊ธฐ๊ณ„๋Š” ๋…ผ๋ฆฌ์  ์ง€์œ„๊ฐ€ ๋™๋“ฑํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

๊ผญ ์•Œ๊ณ ๊ฐ€๊ธฐ

์ผ๋‹จ ๋™๋“ฑ์„ฑ์— ๋จผ์ € ์ฃผ๋ชฉํ•ด๋ณด๋ฉด, ๋™๋“ฑ์„ฑ์„ ํŒ๋‹จํ•˜๊ธฐ ์œ„ํ•ด ์ŠคํŽ™์ด ๊ฐ™๋‹ค๋Š” ๋…ผ๋ฆฌ์  ๊ธฐ์ค€์ด ์žˆ๋‹ค. ๋…ผ๋ฆฌ์  ๊ธฐ์ค€์€ ์ ˆ๋Œ€์  ๊ธฐ์ค€๊ณผ๋Š” ์กฐ๊ธˆ ๋‹ค๋ฅด๋‹ค. ๋‹ค์‹œ๋งํ•˜๋ฉด ๋…ผ๋ฆฌ์  ๊ธฐ์ค€์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ์–ธ์ œ๋“  ์ •ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค๐Ÿ˜ฑ

 

๋…ผ๋ฆฌ์  ๊ธฐ์ค€์„ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋งŒ๋“ค ํ•„์š”๊ฐ€ ์žˆ๋‚˜?

๊ฐœ๋ฐœ์„ ํ•˜๋ฉด์„œ ๋ฉ”๋ชจ๋ฆฌ ๋‚ด ์ฃผ์†Œ๊ฐ’์ด ๋‹ค๋ฅธ, ๋ณ„๊ฐœ์˜ ๊ฐ์ฒด๋ผ ํ• ์ง€๋ผ๋„, ํŠน์ • ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋ฉด ๋…ผ๋ฆฌ์ ์œผ๋กœ ๊ฐ™์€ ๊ฐ์ฒด๋กœ ๋‹ค๋ค„์•ผํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๊ฑฐ๋“ ์š”..๊ทธ๋ฆฌ๊ณ  ๊ทธ ํŠน์ • ์กฐ๊ฑด์€, ๋งค๋ฒˆ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ต๋‹ˆ๋‹ค โ— โ€ฟโ—  ...

๋ฐ”๋กœ ์ด๋Ÿฐ ์ด์œ ๋“ค ๋•Œ๋ฌธ์— ๊ฐœ๋ฐœ์ž๋Š” ๊ฐ์ฒด๋ฅผ ๋‹ค๋ฃฐ ๋•Œ "์ž, ์ง€๊ธˆ๋ถ€ํ„ฐ ์ด ๋‘๊ฐœ๊ฐ€ ๊ฐ™์€๊ฑฐ์•ผ!"๋ผ๋Š” ๋…ผ๋ฆฌ์  ๊ธฐ์ค€์„ ์ •ํ•˜๊ณ , ๊ทธ ๊ธฐ์ค€์„ ์ ์šฉํ•ด์•ผ ํ•œ๋‹ค. ์—ฌ๊ธฐ์„œ ํ•„์š”ํ•œ ๊ฐœ๋…์ด equals()์˜ค๋ฒ„๋ผ์ด๋”ฉ์ด๋‹ค.

 

๊ทธ๋Ÿฐ๋ฐ equals()๋งŒ ์˜ค๋ฒ„๋ผ์ด๋”ฉํ•ด์„œ ๋‚˜๋งŒ์˜ ๊ธฐ์ค€์„ ์ •ํ•ด์ฃผ๋ฉด ๋ ๊นŒ?

 

์•„๊นŒ ์œ„์— ๋™์ผ์„ฑ์„ ํŒ๋‹จํ•˜๋ ค๋ฉด ๋ฉ”๋ชจ๋ฆฌ ๋‚ด์˜ ์ฃผ์†Œ ๊ฐ’์ด ๊ฐ™์€์ง€ ๋น„๊ตํ•œ๋‹ค๊ณ  ํ–ˆ๋‹ค.. ๋…ผ๋ฆฌ์  ๊ธฐ์ค€์€ ์–ด์ฐŒํ•œ๋‹คํ•ด๋„ ๋ฉ”๋ชจ๋ฆฌ๋Š” ์–ด์ฉŒ๋ƒ..(?)์—ฌ๊ธฐ์„œ ๋ฐ”๋กœ ๊ทธ๊ฑธ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด hashCode() ์˜ค๋ฒ„๋ผ์ด๋”ฉ์ด๋‹ค. ์•„์–˜ hash๊นŒ์ง€ ๋™์ผํ•œ ๊ฒƒ์œผ๋กœ ์ทจ๊ธ‰๋  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋ฉด ์™„.์ „.๋ฒ”.์ฃ„.๐Ÿ˜Ž

๋”ฐ๋ผ์„œ ๋‘ ๊ฐœ์˜ ๋ฉ”์„œ๋“œ๋Š” ํ•ญ์ƒ ๋ถ™์–ด๋‹ค๋‹ˆ๋ฉด์„œ ์™„์ „ ๋ฒ”์ฃ„๋ฅผ ํ•˜๊ฒŒ ๋œ๋‹คใ…Žใ…Ž

 


[+ 11.01 ์ถ”๊ฐ€] ๋™์ผ์„ฑ์„ ๊ฐ–๊ฒŒ ํ•ด์ฃผ๊ธฐ ์œ„ํ•ด hashCode() ์˜ค๋ฒ„๋ผ์ด๋”ฉ ํ•˜๋Š”๊ฑด๊ฐ€์š”?

๋™์ผํ•˜๋‹ค๋Š” ์˜๋ฏธ๋ฅผ ์ฃผ๊ธฐ์œ„ํ•ด hashCode()๋ฅผ ์˜ค๋ฒ„๋ผ์ด๋”ฉํ•œ๋‹ค๊ณ  ์ดํ•ดํ•˜๋Š” ๊ฒƒ์€ ์ ์ ˆํ•œ ๋ฐฉํ–ฅ์ด ์•„๋‹™๋‹ˆ๋‹ค๐Ÿ˜ฑ๊ทธ ๋‘˜์€,, ์ ํ•ฉํ•œ ๋น„๊ต๋Œ€์ƒ์ด ์•„๋‹ˆ์—์š”...! ์–ด๋–ค ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๋Š”์ง€ ์„ค๋ช…ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

hash ๊ฐ’์„ ์‚ฌ์šฉํ•˜๋Š” Collection(HashMap, HashSet, HashTable)์—์„œ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๋Š”๋ฐ์š”. ๊ฐ์ฒด๊ฐ€ ๋…ผ๋ฆฌ์ ์œผ๋กœ ๊ฐ™์€์ง€ equals ๋น„๊ตํ•  ๋•Œ ์ ˆ์ฐจ๋ฅผ ์‚ดํŽด๋ณด๋ฉด 

1. HashCode()๋ฆฌํ„ด๊ฐ’์„ ํ™•์ธ
1-1. ๊ฐ™์„๊ฒฝ์šฐ, equals() ๋ฆฌํ„ด๊ฐ’์„ ํ™•์ธ
1-2. ๋‹ค๋ฅผ๊ฒฝ์šฐ, ๋‹ค๋ฅธ๊ฐ์ฒด๋กœ ์ฒ˜๋ฆฌ

2. equals()์˜ ๋ฆฌํ„ด๊ฐ’์„ ํ™•์ธ
2-1. ๊ฐ™์„๊ฒฝ์šฐ, ๋™๋“ฑํ•œ ๊ฐ์ฒด๋กœ ์ฒ˜๋ฆฌ
2-2. ๋‹ค๋ฅผ๊ฒฝ์šฐ, ๋‹ค๋ฅธ๊ฐ์ฒด๋กœ ์ฒ˜๋ฆฌ

 

์ด๋ ‡๊ฒŒ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค! ๋”ฐ๋ผ์„œ hashCode๋งŒ ๋™์ผํ•œ ๊ฒƒ์€ ๋‹ค๋ฅธ ๊ฐ์ฒด๋กœ ํŒ๋‹จ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹คโ˜บ๏ธ(์™„์ „๋ฒ”์ฃ„์— ์‹คํŒจํ•œ๊ฑฐ์ฃ ใ… ใ… )
๊ฐ์ฒด์˜ ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š” HashSet์— ๋™์ผํ•œ ์ด๋ฆ„์˜ ๊ฐ์ฒด๋ฅผ addํ•˜๊ณ  hashCode()๋งŒ ์˜ค๋ฒ„๋ผ์ด๋”ฉ์„ ํ•œ ํ›„ set์˜ ๊ฒฐ๊ณผ๋ฅผ ์‚ดํŽด๋ณด๋ฉด ๋‘ ๊ฐœ๊ฐ€ add ๋ฉ๋‹ˆ๋‹ค! ์ฝ”๋“œ๋ฅผ ๋ณผ๊นŒ์š”?

public class User{

	private final String name;
    
    public User(String name){
    	this.name = name;
    }
    
    @Override
    public int hashCode(){
    	//์ด๋ฆ„์œผ๋กœ ํ•ด์‹ฑํ•ฉ๋‹ˆ๋‹ค.
    	return Objects.hashCode(name)
    }
    
    public static void main(String[] args){
    	
        Set<User> set = new HashSet<>();
        
        User user1 = new User("judy");
        User user2 = new User("pobi");
        
        //๋‘๋ช…์˜ ์‚ฌ๋žŒ์„ user set์— ์ถ”๊ฐ€
        set.add(user1);
        set.add(user2);
        
        // ์ค‘๋ณต์—†์ด ๋ฐ์ดํ„ฐ๋“ค์„ ๋‹ด์€ ๊ฒฐ๊ณผ๋Š”?
        System.out.println(set.size());
    	
    }
}
2

 

๋‘ ๊ฐœ์˜ ํ•ด์‹œ๊ฐ’์ด ์„œ๋กœ ๋‹ฌ๋ผ์„œ ๋“ค์–ด๊ฐ„๊ฒŒ ์•„๋‹๊นŒ?

(์ฃผ๋”” ํŠน,, override๊ฐ€ ์ œ๋Œ€๋กœ ์•ˆ๋œ ๊ฒƒ์„ ์˜์‹ฌํ•จ. ์ ˆ๋Œ€ ๋ณธ์ธ์ด ์ž˜๋ชป์ด๋ผ๊ณ  ์ƒ๊ฐ๋ชปํ•จ โ— โ€ฟโ—  ) ์ฝ”๋“œ๋กœ ํ™•์ธํ•ด๋ณผ๊นŒ์š”?

public class User{

	private final String name;
    
    public User(String name){
    	this.name = name;
    }
    
    @Override
    public int hashCode(){
    	//์ด๋ฆ„์œผ๋กœ ํ•ด์‹ฑํ•ฉ๋‹ˆ๋‹ค.
    	return Objects.hashCode(name)
    }
    
    public static void main(String[] args){
    	
        Set<User> set = new HashSet<>();
        
        User user1 = new User("judy");
        User user2 = new User("pobi");
        
        //๋‘๋ช…์˜ ์‚ฌ๋žŒ์„ user set์— ์ถ”๊ฐ€
        set.add(user1);
        set.add(user2);
        
        System.out.println(user1.hashCode());
        System.out.println(user2.hashCode());
    	
    }
}
99162322
99162322

 

 

๊ฒฐ๊ณผ์ ์œผ๋กœ hashCode()๋Š” ๊ฐ™์œผ๋‚˜ ๋‘ ๊ฐ์ฒด๋Š” ๋™๋“ฑ์„ฑ์„ ์ธ์ •ํ•˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ๋™๋“ฑํ•œ ๊ฒƒ์œผ๋กœ ์ทจ๊ธ‰ํ•˜์ง€ ์•Š์€ ๊ฒƒ์ž…๋‹ˆ๋‹ค.


๋ฌด์กฐ๊ฑด ์žฌ์ •์˜๋ฅผ ํ•ด์•ผํ•˜๋ƒ ‘๋‚˜๋Š”Collection์„ ์•ˆ์“ธ๊ฑฐ๋ผ๋ฉด???’

๋ฌด์กฐ๊ฑด ์žฌ์ •์˜ํ•ด์•ผํ•œ๋‹ค๊ณ  ๋งํ•  ์ˆ˜ ์—†์ง€๋งŒ ํ†ต์ƒ์ ์œผ๋กœ ๊ฐ™์ด ์žฌ์ •์˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์Šต๊ด€์„ ๊ฐ€์ ธ๊ฐ€๋Š” ๊ฒƒ์ด ์ข‹๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ฐ์ฒด์— ๋Œ€ํ•œ ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•˜๋Š” ์ธก๋ฉด์—์„œ๋„ ์žฌ์ •์˜ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

 

 

 

 


 

 

 

equals() ๋ฉ”์„œ๋“œ

๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” equals() ๋ฉ”์„œ๋“œ๋Š” ๋™๋“ฑ์„ฑ(equivalence) ๋น„๊ต์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด ๋ฉ”์„œ๋“œ๋Š” ๋‘ ๊ฐ์ฒด๊ฐ€ ๋™๋“ฑํ•œ์ง€(=๋‚ด์šฉ์ด ๊ฐ™์€์ง€)๋ฅผ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค. ์ž๋ฐ”์˜ equals() ๋ฉ”์„œ๋“œ๋Š” Object ํด๋ž˜์Šค์— ์ •์˜๋˜์–ด ์žˆ๊ณ , ๋ชจ๋“  ์ž๋ฐ” ํด๋ž˜์Šค๋Š” Object ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›์œผ๋ฏ€๋กœ ์ด ๋ฉ”์„œ๋“œ๋ฅผ ์˜ค๋ฒ„๋ผ์ด๋“œ(์žฌ์ •์˜)ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๊ธฐ๋ณธ ๊ตฌํ˜„์€ ๊ฐ์ฒด์˜ ๋ ˆํผ๋Ÿฐ์Šค(๋ฉ”๋ชจ๋ฆฌ ์œ„์น˜)๊ฐ€ ๊ฐ™์€์ง€๋ฅผ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๊ฐ์ฒด์˜ ์‹ค์ œ ๋‚ด์šฉ์„ ๋น„๊ตํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ๊ฐ์ฒด๊ฐ€ ๋™์ผํ•œ ์ธ์Šคํ„ด์Šค์ธ์ง€๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ํ•„์š”ํ•˜๋‹ค๋ฉด, ํด๋ž˜์Šค๋งˆ๋‹ค ์ด ๋ฉ”์„œ๋“œ๋ฅผ ์˜ค๋ฒ„๋ผ์ด๋“œํ•˜์—ฌ ๋‘ ๊ฐ์ฒด๊ฐ€ ๋™๋“ฑํ•œ์ง€๋ฅผ ๋น„๊ตํ•˜๋„๋ก ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

 

hashCode() ๋ฉ”์„œ๋“œ

HashCode() ๋ฉ”์„œ๋“œ๋Š” ํ•ด์‹œ ์ฝ”๋“œ ์ƒ์„ฑ์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด ๋ฉ”์„œ๋“œ๋Š” ๊ฐ์ฒด๋ฅผ ํ•ด์‹œ๋งต๊ณผ ๊ฐ™์€ ํ•ด์‹œ ๊ธฐ๋ฐ˜ ์ž๋ฃŒ ๊ตฌ์กฐ์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ํ•ด์‹œ ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. hashCode() ๋ฉ”์„œ๋“œ์˜ ๊ธฐ๋ณธ ๊ตฌํ˜„์€ ๊ฐ์ฒด์˜ ๋ฉ”๋ชจ๋ฆฌ ์œ„์น˜์— ๊ธฐ๋ฐ˜ํ•œ ํ•ด์‹œ ์ฝ”๋“œ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๊ฐ์ฒด๊ฐ€ ๋‹ค๋ฅด๋ฉด ๋‹ค๋ฅธ ํ•ด์‹œ ์ฝ”๋“œ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฏ€๋กœ, ๊ฐ์ฒด๋ฅผ ํ•ด์‹œ๋งต์— ์ €์žฅํ•  ๋•Œ ๋‹ค๋ฅธ ๊ฐ์ฒด๋กœ ์ทจ๊ธ‰๋ฉ๋‹ˆ๋‹ค.
๊ฐ์ฒด์˜ hashCode() ๋ฉ”์„œ๋“œ๋ฅผ ์˜ค๋ฒ„๋ผ์ด๋“œํ•˜์—ฌ ๊ฐ์ฒด ๋‚ด์šฉ์— ๊ธฐ๋ฐ˜ํ•œ ๊ณ ์œ ํ•œ ํ•ด์‹œ ์ฝ”๋“œ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋„๋ก ์žฌ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

equals() ์™€ hashCode()์˜ ์ฐจ์ด

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

 

equals() ๋ฉ”์„œ๋“œ๋Š” ๋™๋“ฑ์„ฑ์„ ํŒ๋‹จํ•˜๊ณ , hashCode() ๋ฉ”์„œ๋“œ๋กœ ๊ฐ์ฒด๋ฅผ ์‹๋ณ„ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.