객체 비교를 위해 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!