코드오류 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.
1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)
[질문 내용]
여기에 질문 내용을 남겨주세요.
package collection.set.test; 의 RetangleTest 클래스에 관한 질문입니다
package collection.set.test;
import java.util.HashSet;
import java.util.Set;
public class RetangleTest {
public static void main(String[] args) {
Set<Retangle> retangleSet = new HashSet<>();
retangleSet.add(new Retangle(10,20));
retangleSet.add(new Retangle(20,10));
retangleSet.add(new Retangle(30,30));
for (Retangle retangle : retangleSet) {
System.out.println(retangle);
}
}
}
중복된 값은 출력하지않아야하는데
예시코드를 돌려보아도 중복된값을 출력하고있는 문제가있습니다
package collection.set.test;
import java.util.Objects;
public class Retangle {
private int width;
private int height;
public Retangle(int width, int height) {
this.width = width;
this.height = height;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Retangle retangle = (Retangle) o;
return width == retangle.width && height == retangle.height;
}
@Override
public int hashCode() {
return Objects.hash(width, height);
}
@Override
public String toString() {
return "Retangle{" +
"width=" + width +
", height=" + height +
'}';
}
}
이거는 Retangle 클래스입니다
hashCode , eqauls를 오버라이딩했는데도 중복출력이되네요
답변 2
0
안녕하세요. DG Y님, 공식 서포터즈 y2gcoder입니다.
제가 질문을 이해하지 못한 것 같습니다.

저는 예시 코드로 돌렸을 때 중복이 잘 걸러진 결과가 나오고 있습니다 🙂
그리고 질문 본문에 적어주신 RectangleTest 코드에서는 중복으로 걸러질만한 Rectangle 객체가 없을 것 같습니다!
감사합니다.
0
안녕하세요, 인프런 AI 인턴입니다.
DG Y님께서 질문해주신 코드 관련 문제에 대해 설명드리겠습니다.
현재 작성하신 Retangle 클래스는 hashCode()와 equals() 메서드를 모두 적절하게 오버라이드하신 것처럼 보입니다. 이 두 메서드를 올바르게 구현한 경우, Java의 HashSet은 동일한 객체를 중복으로 저장하지 않습니다. 따라서 코드가 올바르게 작동해야 합니다.
혹시 문제가 발생하는 부분의 버그 또는 오타가 있을 수 있습니다. 예를 들어, 클래스 이름이 “Retangle”로 잘못 기재되었을 가능성이 있습니다. Java의 경우 클래스 이름은 사소한 철자 오류도 중요할 수 있으므로 이를 확인해보세요.
하지만 코드 자체는 equals()와 hashCode()가 동일한 논리를 가지고 있으므로, 논리적인 오류가 없는 한 같은 넓이와 높이를 가진 두 Retangle 객체는 동일한 객체로 인식되어야 합니다.
아래 확인할 사항을 추천드립니다:
1. Java 파일을 저장 후 프로젝트를 다시 빌드해 보세요.
2. Retangle의 여러 인스턴스를 생성하여 동일한 인스턴스를 추가하지 않도록 코드를 실행한 줄 확인하세요.
3. 여러 객체를 테스트하는 소규모 예제 별로 출력해 보세요.
관련된 사항에 대한 기존 질문 및 답변도 다음 링크를 참고해 보시면 유용할 것입니다: 예제 질문입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
제네릭 타입 매개변수 제한과 관련한 문의입니다.
0
75
3
강의가 좀 버겁다 느껴질 때 학습방법 문의
1
124
4
제네릭 반환값 및 파라미터 선언 방식의 변화 <T> T
0
56
1
new T()가 안 되는 니유
0
95
1
안녕하세요, 문제와 실행 결과가 다른 부분이 있어 제보드립니다.
0
97
2
자바 로드맵 선택 질문
0
109
2
실전 자바 중급 - 2편 후 추천 강의
0
172
2
실프로젝트에서 Java25버전 사용
0
112
1
Arrays.sort
0
66
1
블로그 작성 시, 저작권 문제에 대하여
0
164
1
중급2편 56강의 bucket.add(value); 메서드가 이해가 안됩니다.
0
92
3
pop()과 poll()의 차이
0
94
1
특정 index의 노드 조회하기 질문
0
65
2
List.of() 비어있는 불변 리스트 생성
0
80
2
문제2: 개 타입 반환
0
51
2
[리뷰] 중급2편까지 겨우 완강 했습니다.
0
109
2
문제와 풀이1 Ex2와 Ex3
0
63
2
노드 삭제시 노드 null값으로 초기화
0
74
2
강의영상에 대한 질문
0
56
1
타입 매개변수 제한
0
59
1
compareTo
0
66
1
직접 구현하는 연결리스트 3 - 추가 부분 질문있습니다
0
94
3
섹션 8-58 equals and hashcode 에서 코드가 다르게 생성됨
0
67
2
퀴즈 오류 관련 문의
0
104
1





