개체 목록이 포함 된 목록이 있는데이 목록에서 해당 특성 중 두 가지 값이 같은 모든 요소를 제거하고 싶습니다. 나는했다하지만이 같은 일을 대한 :해시 메서드를 재정의하지 않고 중복 제거
List<Class1> myList;
....
Set<Class1> mySet = new HashSet<Class1>();
mySet.addAll(myList);
및 오버라이드 (override) 해시 방법을 클래스 1에 그것은 단지 내가 고려해야 할 속성에 따라 숫자를 반환 있도록.
문제는이 방법으로 해시 메서드를 재정의 할 수 없도록 응용 프로그램의 다른 부분에서 다른 필터링을 수행해야한다는 것입니다. 두 가지 해시 메서드가 필요합니다.
해시 방법을 재정의하지 않고이 필터링을 수행하는 가장 효율적인 방법은 무엇입니까?
감사
@Bark K. 아니요, 두 클래스를 만들 수는 없지만 동일한 클래스인지, 다른 관점에서 볼 때 동일한 객체인지 아닌지를 결정하기 위해 여러 정보를 고려해야합니다. 사실 hash() 메서드 중 어느 것도 올바르지 않을 것입니다. 트릭을 만드는 것이 좋을 것이므로 좋은 습관이 아닙니다. 그런 이유로 저는 해시 방법을 고려하지 않은 것을 사용하고 싶었습니다. – Javi
명확성을 위해 : 최종 '세트'에 attr1과 attr2의 값이 동일한 인스턴스가 두 개 필요하지 않습니까? – DJClayworth
@ DJClayworth 정확히, 그게 – Javi