컬렉션_HashSet_2
2024. 2. 20. 21:40ㆍJAVA
HashSet은 객체를 저장하기 전, 기존에 중복되는 객체가 있는지 확인한다.
Set 특징은 뭐다?
중복 허용을 안 한다! 따라서 위의 작업을 거쳐야만 한다.
boolean add(Obejct o)는 저장할 객체의 equals()와 hashCode()를 호출한다.
equals() 와 hashCode()가 오버라이딩 되어 있어야 한다.
equals() - 같은 객체인지 확인
hashCode() - 해당 객체의 해시 코드 값을 반환
public class HashSet_3 {
public static void main(String[] args) {
HashSet set = new HashSet();
set.add("abc");
set.add("abc");
set.add(new Person("David", 10));
set.add(new Person("David", 10));
System.out.println(set); // equals(), hashCode() 오버라이딩 안 하면 David 두명 됨.
}
}
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return name + " : " + age;
}
@Override
public int hashCode() {
// int hash(Obejct ...values); // 가변인자
return Objects.hash(name, age);
}
@Override
public boolean equals(Object obj) {
if (!(obj instanceof Person)) {
return false;
}
Person p = (Person) obj;
return this.name.equals(p.name) && this.age == p.age;
}
}'JAVA' 카테고리의 다른 글
| Optional<T> (0) | 2024.02.23 |
|---|---|
| 컬렉션_TreeSet (0) | 2024.02.20 |
| 컬렉션_HashSet(1) (0) | 2024.02.19 |
| 컬렉션_Iterator 과 Map (0) | 2024.02.17 |
| 컬렉션_Iterator (0) | 2024.02.17 |