티스토리 뷰

궁금한 것

HashCode

eyoadgkn 2024. 1. 31. 16:39

HashCode
HashCode는 객체의 고유한 정수 값을 나타내는 메서드입니다.
이 값은 객체를 식별하는 데 사용되며, 특히 해시 테이블과 같은 자료 구조에서 중요한 역할을 합니다.

why


빠른 검색: HashCode를 사용하면 해시 테이블에서 객체를 빠르게 찾을 수 있습니다. 해시 테이블은 HashCode 값을 사용하여 객체를 저장하고 검색합니다.

중복 확인: HashCode를 사용하면 두 객체가 같은지 빠르게 확인할 수 있습니다. 두 객체의 HashCode 값이 같다면, 두 객체가 같을 가능성이 높습니다.

데이터 구조 활용: HashCode는 Set, HashMap, Hashtable 등의 자료 구조에서 객체를 식별하는 데 사용됩니다.

public class Person {
    // 이 클래스는 사람 객체를 나타냅니다.
    private String name; // 사람의 이름을 저장하는 필드
    private int age; // 사람의 나이를 저장하는 필드

    // 생성자. 이름과 나이를 초기화합니다.
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    // hashCode() 메서드는 객체의 고유한 정수 값을 반환합니다.
    // 이 값은 해시 테이블에서 객체를 식별하는 데 사용됩니다.
    @Override
    public int hashCode() {
        // 초기값 17을 사용하여 해시 코드를 계산합니다.
        int result = 17;
        
        // name 필드의 해시 코드와 age 필드를 사용하여 해시 코드를 계산합니다.
        // 31은 소수이므로 좋은 승수 값입니다.
        result = 31 * result + name.hashCode();
        result = 31 * result + age;
        
        // 계산된 해시 코드를 반환합니다.
        return result;
    }

    // equals() 메서드는 두 객체가 같은지 비교합니다.
    // 두 객체의 name과 age 필드가 같으면 true를 반환합니다.
    @Override
    public boolean equals(Object obj) {
        // 자기 자신과 비교하는 경우 true를 반환합니다.
        if (this == obj)
            return true;
        
        // 비교 대상이 null이거나 클래스가 다른 경우 false를 반환합니다.
        if (obj == null || getClass() != obj.getClass())
            return false;
        
        // 비교 대상을 Person 타입으로 캐스팅합니다.
        Person other = (Person) obj;
        
        // name과 age 필드가 같은지 비교하여 결과를 반환합니다.
        return Objects.equals(name, other.name) && age == other.age;
    }
}

Person 클래스를 정의하고, hashCode() 메서드와 equals() 메서드를 오버라이드하여 구현하고 있습니다.
hashCode() 메서드는 객체의 고유한 정수 값을 반환하며, 이 값은 해시 테이블에서 객체를 식별하는 데 사용됩니다.
이 메서드는 name 필드의 해시 코드와 age 필드를 조합하여 해시 코드를 계산합니다.
equals() 메서드는 두 Person 객체가 같은지 비교합니다.
이 메서드는 먼저 자기 자신과 비교하는 경우 true를 반환하고, 비교 대상이 null이거나 클래스가 다른 경우 false를 반환합니다.
그 후에는 name과 age 필드가 같은지 비교하여 결과를 반환합니다.

이러한 hashCode() 메서드와 equals() 메서드는 해시 테이블과 같은 자료 구조에서 객체를 효율적으로 관리하고 비교하는 데 사용됩니다.

'궁금한 것' 카테고리의 다른 글

Connection pool  (0) 2024.02.02
DML/DDL/DCL  (0) 2024.02.02
Null point Exception이란  (0) 2024.01.31
interface 사용이유  (0) 2024.01.31
IO 출력스트림 Token 단위  (0) 2024.01.30
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함