앞선 아티클에서 HashSet의 기본 사용방법을 알아보고, hashCode( )와 equals( ) 메서드를 살펴보았습니다. 이번에는 사용자 정의 클래스를 통해서 hashCode( )와 equals( ) 메서드를 오버라이드해 사용하는 예시까지 살펴보도록 하겠습니다.
이번에는 사용자 정의 클래스인 Member 클래스를 선언하도록 하겠습니다. 우리가 하고자 하는 것은, 이 Member 인스턴스가 다르더라도 해당 클래스의 멤버인 name과 age가 모두 동일할 경우에는 같은 인스턴스로 간주해 중복 저장되지 않도록 선언하는 것입니다.
[Member.java]
public class Member {
public String name;
public int age;
public Member(String name, int age) {
this.name = name;
this.age = age;
}
// name과 age의 값이 같으면 true 리턴
@Override
public boolean equals(Object obj) {
if(obj instanceof Member) {
Member member = (Member) obj;
return member.name.equals(name) && (member.age == age);
} else {
return false;
}
}
// name과 age 값이 같으면, 동일한 hashCode가 리턴된다
@Override
public int hashCode() {
return name.hashCode() + age;
}
}
import java.util.*;
public class ExampleMain {
public static void main(String[] args) {
Set<Member> set = new HashSet<Member>();
set.add( new Member("Swings", 30) );
set.add( new Member("Swings", 30) );
System.out.println("객체 수 : " + set.size());
}
}
/* 출력
객체 수 : 1
*/
'Programming > JAVA' 카테고리의 다른 글
컬렉션 프레임워크(4) - Map 컬렉션 1 : Map의 개념[2/2] (0) | 2023.12.01 |
---|---|
컬렉션 프레임워크(4) - Map 컬렉션 1 : Map의 개념[1/2] (1) | 2023.11.30 |
컬렉션 프레임워크(3) - Set 컬렉션 2 : HashSet [1/2] (0) | 2023.11.26 |
컬렉션 프레임워크(3) - Set 컬렉션 1 : Set의 개념 (1) | 2023.11.14 |
컬렉션 프레임워크(2) - List 컬렉션 4 : Vector (0) | 2023.11.07 |