컬렉션_HashSet_2

2024. 2. 20. 21:40JAVA

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