>Java >java지도 시간 >정확한 객체 비교를 위해 Java에서 equals() 메서드를 재정의하는 방법은 무엇입니까?

정확한 객체 비교를 위해 Java에서 equals() 메서드를 재정의하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-12-26 21:15:14532검색

How to Override the equals() Method in Java for Accurate Object Comparison?

객체 비교를 위해 Java에서 equals() 메서드 재정의

Java에서 equals() 메서드를 사용하면 두 객체가 있는지 확인할 수 있습니다. 동등합니다. 기본적으로 equals()는 객체 참조를 비교하지만 항상 원하는 동작은 아닙니다. equals() 메서드를 재정의하면 고유한 비교 논리를 정의할 수 있습니다.

시나리오:

두 개의 데이터 필드: 이름과 나이. 이름과 나이를 기준으로 people 개체를 비교하는 것이 목표입니다.

사용자 정의 equals() 메서드:

equals() 메서드를 재정의하려면 People 클래스:

public boolean equals(People other) {
    // Null check and class check
    if (other == null || getClass() != other.getClass()) {
        return false;
    }

    // Downcast to People
    People otherPeople = (People) other;

    // Compare fields using == for primitive types (age) and equals() for objects (name)
    return name.equals(otherPeople.name) && age == otherPeople.age;
}

기본 유형 수정 비교:

원래 코드에서는 기본 유형인 age 필드를 비교하기 위해 equals()를 사용하려고 시도했습니다. 기본 유형에는 자체 동등 비교 연산자(이 경우 ==)가 있습니다. age.equals(other.age)를 age == other.age로 수정하면 이 문제가 해결됩니다.

사용 예:

Main 클래스 내에서 Person의 ArrayList 객체가 생성됩니다. equals() 메소드는 사람을 비교하고 결과를 인쇄하는 데 사용됩니다:

ArrayList<Person> people = new ArrayList<>();
people.add(new Person("Subash Adhikari", 28));
// ...

// Compare people objects
for (int i = 0; i < people.size() - 1; i++) {
    for (int y = i + 1; y <= people.size() - 1; y++) {
        boolean check = people.get(i).equals(people.get(y));

        // Print comparison result
        System.out.println("-- " + people.get(i).getName() + " - VS - " + people.get(y).getName());
        System.out.println(check);
    }
}

출력:

프로그램은 비교된 사람이 같은지 여부를 인쇄합니다. . 예:

-- Subash Adhikari - VS - K false
-- Subash Adhikari - VS - StackOverflow false
-- Subash Adhikari - VS - Subash Adhikari true

위 내용은 정확한 객체 비교를 위해 Java에서 equals() 메서드를 재정의하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.