Java Comparator 인터페이스 - 람다 표현
676
投稿した質問数 3
안녕하세요 강의 감사히 잘 듣고 있습니다.
comparator 인터페이스(람다 인터페이스) 내부 코드 확인 중에,
equals()라는 메서드도 있는데, 이건 Object 클래스 메서드를 오버라이딩 한 것이라고 IntelliJ에서 알려줬습니다.
compare() 메서드랑 구조(리턴타입 메서드명(파라미터))가 똑같고, @override 표시가 없는데, equals()가 오버라이딩 되었는지 어떻게 확인할 수 있나요?

回答 2
0
Java의 Comparator 인터페이스는 실제로 equals 메소드를 정의하지 않지만, 모든 자바 객체가 상속받는 Object 클래스의 메소드인 equals를 가지고 있습니다. 이 메소드는 두 객체가 같은지 비교하는 데 사용됩니다.
그러나 Comparator에서 equals 메소드의 명시적인 정의를 찾을 수 있는 이유는 Comparator의 일반 규약에 의해 equals 메소드가 필요할 수도 있기 때문입니다. 이는 Comparator 인스턴스를 PriorityQueue와 같은 특정 자료구조에 전달하거나 Collections.sort()와 같은 메소드에 전달할 때 중요합니다. 이런 경우 해당 자료구조 또는 메소드는 내부적으로 Comparator의 equals 메소드를 사용할 수 있습니다.
Comparator 인터페이스의 equals 메소드는 다음과 같은 규약을 가집니다:
Comparator가 비교할 수 있는 모든 객체 집합이 동일한 순서로 주어진 경우, 두Comparator를equals로 비교하면true가 반환되어야 합니다.
다시 말해, Comparator 인터페이스의 equals 메소드는 주로 Comparator의 동등성을 검사하는 데 사용되며, 이것은 Comparator가 비교하는 방식, 즉 비교 로직이 동일한지를 판단하는 것을 의미합니다. 그러나 이러한 사용 사례는 매우 드물고, 대부분의 경우 개발자는 Comparator의 equals 메소드를 재정의할 필요가 없습니다.
아래는 Comparator에서 equals 메소드를 재정의하는 예시입니다:
Comparator<String> caseInsensitiveComparator = new Comparator<>() {
@Override
public int compare(String o1, String o2) {
return o1.compareToIgnoreCase(o2);
}
@Override
public boolean equals(Object obj) {
return obj != null && obj instanceof Comparator;
}
};
이 equals 메소드는 obj가 Comparator의 인스턴스인지 확인합니다. 이것은 실제로 유용한 구현이 아닙니다(왜냐하면 모든 Comparator를 동일하게 취급하기 때문입니다), 하지만 이것은 어떻게 equals 메소드가 Comparator에서 재정의될 수 있는지에 대한 예를 보여줍니다. 일반적으로, equals 메소드를 재정의하는 경우 비교 로직이 같은지 확인하는 로직을 구현하게 됩니다.
0
안녕하세요, 인프런 AI 인턴입니다.
Comparator 인터페이스에는 equals() 메서드가 정의되어 있지 않습니다. Object 클래스에서 상속받은 메서드를 오버라이딩한 것이 아니라 확인하시면 감사하겠습니다.
그리고 equals() 메서드를 오버라이딩한다면, @Override 어노테이션이 표시됩니다. 따라서 해당 메서드 위에 @Override 어노테이션을 찾아보시면 오버라이딩 여부를 확인할 수 있습니다.
감사합니다.
패키지 구분에 대해 궁금한게 있습니다
0
11
1
안녕하세요. 바뀐 채점사이트 관련해서 문의드립니다.
0
19
1
갑자기 채점 사이트가 바뀌었어요
0
19
1
문제 리스트 페이지
0
22
1
채팅프로그램 한글 깨짐
0
497
2
강의 교안
0
771
2
split 사용에 있어서의 의도치 않은 값 할당이 되고 있네요
0
409
1
추상화와 추상클래스는 다른 말인가요? 그 용도가 궁금합니다
1
509
1
메서드와 프로퍼티의 차이가 뭔가요?
1
380
1
static이 클라스에 부여 되었을 때
1
308
1
Iterator<User> 대신에 Collections.unmodifiableList(users)를 사용해도 되나요?
0
373
1
++,--관련 질문드립니다.
0
431
1
Socket의 InputStream
0
586
2
API 문서가 만들어지지 않습니다
0
577
2
66. 채팅 프로그램 만들기 1/2
0
743
2
65. 네트워크프로그래밍1
0
394
1
this생성자 관련 질문 있습니다!
0
595
2
54. 배열 2편 강의 중
0
395
1
51. 배열 1편 강의 중..
0
303
1
50. 팩토리 메소드 패턴 강의 중
0
292
1
자바 공부법
1
1678
2
class object insatnce
1
693
1
43. 생성자 -super가 기본 생성자가 아닐 때
1
607
1
while문의 continue 예제3번에 관한 질문
0
423
2

