나는 다음과 같은 형식으로 TreeMap
을 만들려고 오전 :TreeMap Comparator가 명령을 내리지 않고 있습니까?
TreeMap<Kenel, List<Dog>> treeMapOfKennelsAndDogs;
각 항목은 Dogs
의 연결리스트와 Kennel
개체입니다. 각각의 개집을 각각에있는 가장 오래된 개 개로 비교하여 주문하고 싶습니다.
그러나 treeMap
의 순서는 내가 기대하는 바가 아니며, 개 목록에 크기 1의 개 목록이있는 경우 순서가 잘못되었습니다.
다음은 각 개에 관련된 가장 오래된 개를 찾는 코드와 비교기 논리입니다. 서비스 클래스에서
@Entity
@Table(name = "KENNEL")
public class Kennel {
//other fields
@OneToMany(cascade = CascadeType.MERGE, orphanRemoval = true)
@JoinColumn(name = "KENNEL_ID", referencedColumnName = "ID", updatable = true, insertable = true)
private List<Dog> dogList;
public DateTime getOldestDogInList() {
if (dogList.size() == 0) {
return null; }
Dog dog= dogList.get(0);
for (int i = 1; i < dogList.size(); i++) {
dog d = dogList.get(i);
if (d.getCreated().isBefore(dog.getCreated())) {
dog = d;
}
}
return dog.getCreated();
}
비교기 로직 :
Comparator<Kennel> oldestDog = new Comparator<Kennel>() {
@Override
public int compare(Kennel k1, Kennel k2) {
int result = k1.getOldestDogInList().compareTo(k2.getOldestDogInList());
return result;
}
};
TreeMap<Kennel, List<Dog>> treeMapOfKennelsAndDogs = new TreeMap<>(oldestDog);
은 트리 맵에서 잘못된 순서를 야기 코드에서 오류가 있습니까? 서비스 클래스에서
'Kenel'에 이미 'List'회원이 포함되어있는 경우 왜 'TreeMap >'이 필요합니까? 'TreeSet '을 대신 사용할 수 있습니다. –
Eran
실제 분류는 무엇입니까? –
다른 개보다 어린 개가있는 개집은지도에서 실제로 더 일찍 나타 납니까? – java123999