SeouliteLab

[Java/자바] hashCode() 메서드와 사용 이유 본문

프로그래밍

[Java/자바] hashCode() 메서드와 사용 이유

Seoulite Lab 2024. 3. 9. 00:50

hashCode() 메서드란?

Java에서 모든 객체는 Object 클래스로부터 상속받는 hashCode() 메서드를 가지고 있습니다. 이 메서드는 객체의 해시 코드를 반환합니다. 해시 코드는 객체의 고유한 정수 식별자로 사용됩니다.

hashCode() 메서드의 사용 이유

hashCode() 메서드는 다음과 같은 목적으로 사용됩니다:

  • 해시 기반 컬렉션에서 객체를 저장하고 검색하는 데 사용됩니다. 예를 들어, HashSet, HashMap 및 Hashtable과 같은 컬렉션 클래스에서 객체를 빠르게 검색할 수 있습니다.
  • 객체의 동등성을 비교하는 데 사용됩니다. 객체의 equals() 메서드를 구현할 때 hashCode() 메서드도 함께 재정의하여 동일한 객체에 대해 동일한 해시 코드를 반환하도록 해야 합니다.
  • 객체를 해싱된 데이터 구조에 저장할 때 충돌을 최소화합니다. 서로 다른 객체가 같은 해시 코드를 반환할 수 있지만, hashCode() 메서드가 잘 구현되어 있다면 충돌 가능성을 최소화할 수 있습니다.

hashCode() 메서드의 예제

아래 예제는 hashCode() 메서드를 사용하여 해시 코드를 생성하는 방법을 보여줍니다.


public class Person {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    @Override
    public int hashCode() {
        int result = name.hashCode();
        result = 31 * result + age;
        return result;
    }

    public static void main(String[] args) {
        Person person1 = new Person("Alice", 30);
        Person person2 = new Person("Bob", 25);

        System.out.println("HashCode for person1: " + person1.hashCode());
        System.out.println("HashCode for person2: " + person2.hashCode());
    }
}