inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

김영한의 실전 자바 - 중급 2편

섹션 7. onlyHash

226

권정익

작성한 질문수 60

0

hashCode만 오버라이딩으로 재정의하면 해시코드는 같아지지만, 결국 equals비교 Object의 것을 사용해서 실패하게 된다고 하셨습니다.

그런데 MemberOnlyHash 클래스에서 equals를 재정의를 했다고 가정했을 때, 어떻게 MemberOnlyHash로 갈 수 있는 건가요?

오버라이딩 되어서 우선권을 갖고있는 건 알고있습니다.

이해가 안 가는 부분을 어떻게 말을 해야 할 지 조금 복잡하지만...

 

1번 코드

MyHashSetV2 set = new MyHashSetV2(10);

NoEqualsOnlyHash m1 = new NoEqualsOnlyHash("A");
set.add(m1);

 

2 코드

public boolean add(Object value) {
    LinkedList<Object> bucket = buckets[hashIndex(value)];
    if (bucket.contains(value)) {
        return false;
    }

 

3번 코드



public boolean add(MemberOnlyHash m1) {
    LinkedList<Object> bucket = buckets[0];

    if (bucket.contains(m1)) {
        return false;
    }

 

 

java 객체지향 코딩-테스트 알고리즘

답변 2

1

y2gcoder

안녕하세요. 권정익님, 공식 서포터즈 y2gcoder입니다.

제가 질문을 제대로 이해한 것인지 모르겠습니다!

나름대로 요약해보면

Object 타입으로 찾아온 LinkedList<Object> bucket 의 contains() 에서 내부적으로 equals()를 사용한다고 한다. LinkedList 의 각 원소를 다 Object 타입인데 어떻게 MemberOnlyHash 타입에서 오버라이딩한 equals() 를 사용하느냐?

라고 질문해주신 것으로 이해했습니다!

저는 자바 기본편중급 1편을 보시면 해당 질문에 대한 답변을 얻을 수 있다고 생각합니다!

image

먼저 자바 기본편의 챕터 10. 다형성1 에서 설명하는 메서드 오버라이딩입니다. 이를 보시면 부모타입에서 정의한 기능을 자식 타입에서 재정의했을 때, 오버라이딩된 메서드가 우선권을 가지게 됩니다.

위의 그림에서 Parent를 Object, Child를 MemberOnlyHash 인스턴스 로 각각 보시면 좀 더 이해가 쉬우실 거라 생각합니다.

또한 중급 1편의 챕터 1. Object 클래스의 toString()을 오버라이드하는 부분도 다시 복습해주시면 감사하겠습니다!

image

 

 

감사합니다.

0

박준영

혹시 이 부분 이해하셨을까요??

제네릭 타입 매개변수 제한과 관련한 문의입니다.

0

80

3

강의가 좀 버겁다 느껴질 때 학습방법 문의

1

135

4

제네릭 반환값 및 파라미터 선언 방식의 변화 <T> T

0

63

1

new T()가 안 되는 니유

0

102

1

안녕하세요, 문제와 실행 결과가 다른 부분이 있어 제보드립니다.

0

98

2

자바 로드맵 선택 질문

0

111

2

실전 자바 중급 - 2편 후 추천 강의

0

177

2

실프로젝트에서 Java25버전 사용

0

121

1

Arrays.sort

0

68

1

블로그 작성 시, 저작권 문제에 대하여

0

166

1

중급2편 56강의 bucket.add(value); 메서드가 이해가 안됩니다.

0

94

3

pop()과 poll()의 차이

0

94

1

특정 index의 노드 조회하기 질문

0

66

2

List.of() 비어있는 불변 리스트 생성

0

81

2

문제2: 개 타입 반환

0

56

2

[리뷰] 중급2편까지 겨우 완강 했습니다.

0

114

2

문제와 풀이1 Ex2와 Ex3

0

65

2

노드 삭제시 노드 null값으로 초기화

0

78

2

강의영상에 대한 질문

0

57

1

타입 매개변수 제한

0

59

1

compareTo

0

68

1

직접 구현하는 연결리스트 3 - 추가 부분 질문있습니다

0

99

3

섹션 8-58 equals and hashcode 에서 코드가 다르게 생성됨

0

70

2

퀴즈 오류 관련 문의

0

109

1