2014-10-22 4 views
0

SET에 동일한 객체를 추가하는 코드는 어떻게 만드나요? hashcode() 또는 equal() 함수를 사용하여 무언가를해야 할 것입니다.세트에 동일한 객체 추가 <E>

Class Order { 

private id; 
private Set<Discount>; 

} 

Class Discount { 

private id; 
private Long amount; 
} 

이제 $ 1의 할인 두 개를 저장하려고하면 SET에 한 개의 할인 만 표시됩니다. 최대 절전 모드로 저장하면 할인율은 다른 ID를 갖지만 현재와 동일합니다. 큰 프로젝트이고 변화가 끝날 무렵이므로 Order 클래스의 정의를 변경하고 싶지 않다.

+4

왜 그렇게하고 싶습니까? 너는 부러진 세트를 가질 것이다. – Eran

+3

SET의 목적은 고유 한 요소를 포함하는 것입니다. – g7k

+0

지도는 어떻습니까? http://docs.oracle.com/javase/7/docs/api/java/util/Map.html –

답변

1

JavaDoc for the Set interface에 따르면, 동일한 요소가 중복되어 포함될 수 없다 (equals 및 hashcode에 정의 된대로). 최대 절전 모드가 할인을 저장하면이 기능이 잘 작동하지만 (ID가 다르기 때문에) ID는 지금과 동일하므로 유지하려고하는 미래의 사람들을 수행하지 않으면 성취하려고하는 것이 불가능합니다. 코드가 당신을 싫어할 것입니다.

Order 클래스를 변경하고 싶지 않으므로 할인에 대한 ID를 순차적으로 고유하게 변경하는 것이 가장 좋습니다.

0

집합의 한 점이기 때문에 집합에 동일한 개체를 추가 할 수 없습니다. 집합에는 고유 한 요소가 포함되어 있습니다. 목록이나지도를 사용하는 것이 좋습니다.