>Java >java지도 시간 >ArrayList의 `contains()` 메서드는 객체 동등성을 어떻게 결정합니까?

ArrayList의 `contains()` 메서드는 객체 동등성을 어떻게 결정합니까?

Linda Hamilton
Linda Hamilton원래의
2024-12-02 22:40:11686검색

How Does ArrayList's `contains()` Method Determine Object Equality?

ArrayList의 개체 비교: contain()이 개체 동등성을 결정하는 방법

ArrayList에 개체를 추가할 때 포함된 것으로 가정하는 경우가 많습니다. () 메소드는 필드 값만을 기준으로 객체를 평가합니다. 그러나 실제 프로세스는 그보다 더 미묘합니다.

Java에서는 ArrayList가 구현하는 List 인터페이스가 Contains() 메서드의 서명을 정의합니다. 문서에 따르면 이 메서드는 "이 목록에 지정된 요소가 포함된 경우에만 true를 반환합니다." 하지만 목록은 두 개체가 동일한지 어떻게 판단합니까?

equals()의 역할

답은 정의된 equals() 메서드에 있습니다. 객체 클래스에서. 이 메서드는 두 개체를 비교하고 동일한 값을 나타내는지 확인하는 역할을 합니다. contain() 메소드가 호출되면 내부적으로 equals() 메소드를 호출하여 지정된 객체가 목록의 객체와 일치하는지 확인합니다.

사용자 정의 객체에 대한 사용자 정의 equals()

구체적인 예에서는 Thing 클래스에 사용자 정의 equals() 메서드를 정의합니다. 이는 기본적으로 Object에서 제공하는 equals() 메소드가 필드 값이 아닌 객체 참조를 비교하기 때문에 필요합니다. 구현에서는 값 필드를 올바르게 비교하여 두 Thing 개체가 동일한지 확인합니다.

Thing 클래스가 표시된 대로 구현되었다고 가정하면 동일한 개체를 검색할 때 contain() 메서드가 실제로 true를 반환합니다. 이전에 장바구니 목록에 추가한 항목에 추가됩니다. 이는 두 개체의 값 필드가 일치할 때 equals() 메서드가 true를 반환하기 때문입니다.

결론

요약하면 ArrayList의 Contains() 메서드는 equals() 메서드는 두 객체가 동일한지 확인합니다. 사용자 정의 객체 클래스의 경우 객체의 동등성을 정의하는 특정 속성을 기반으로 자체 구현을 제공하기 위해 equals() 메서드를 재정의해야 할 수도 있습니다.

위 내용은 ArrayList의 `contains()` 메서드는 객체 동등성을 어떻게 결정합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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