🔥 Vamos/Java
1106 | 자바의 정석 기초편 :: ch11-37~11-38
unikue
2022. 11. 6. 02:01
Hash Set
: 객체를 저장하기전에 기존에 같은 객체가 있는지 확인 (중복 허용 안하므로)
: 같은 객체가 있으면 저장하지 않고, 없는 경우만 저장
: boolean add(Object o)는 저장할 객체의 equals()와 hashCode()를 호출 - 이 메서드는 ObjectClass에서 온 것.
우리가 만든 객체를 hashSet에 저장하려면 equals()와 hashCode()가 오버라이딩 되어있어야 함
class Person{
String name;
int age;
person(String name, int age){
this.name=name;
this.age=age;
}
public String toString(){
return name+":"+age;}
----------------------- equals()오버라이딩할때 hashcode()도 오버라이딩하는게 정석. 필수는 아님.
public boolean equals(Object obj){
if(!(obj instanceof Person)) return false; // 참조변수 형변환 전에 instnaceof필수
Person tmp = (Person)obj; // tmp.name으로 쓰기 위해 형변환. object객체엔 name,age가 없으므로
return name.equals(tmp.name) && age==tmp.age;} // this.age==tmp.age 객체 자신과 매개변수 비교
public int hashCode() {
return (name+age).hashCode();} // 문자열 String의 해시코드 메서드 호출
// return Objects.hash(name,age); // Objects클래스를 활용해서 이렇게도 가능