우선 순위 큐를 사용하여 많은 수의 사용자 지정 개체를 정렬하고 사용하고 있습니다. 객체에는 자연 순서가있는 "가중치"가 있습니다. 그러나 우선 순위 큐에 삽입 된 다른 개체는 동일한 "가중치"를 가질 수 있습니다. 그런 경우 우선 순위 큐가 대기열에 넣은 순서대로 순서를 지정하기를 원합니다.PriorityQueue의 우선 순위가 동일한 개체가 있습니다.
예를 들어 CustomObjects A, B, C, D를이 순서대로 추가하면 우선 순위 큐보다 우선 순위가 높은 큐를 모두 동일한 "가중치"로 반환해야합니다. 다른 개체에 추가하기 전에 개체를 더 많이 추가해야합니다.
가 여기 내 사용자 정의 개체에 대한 compareTo와 있습니다 :
public int compareTo(CustomObject o) {
int thisWeight = this.weight;
int thatWeight = o.weight;
if(thisWeight < thatWeight){
return -1;
}
else{
return 1;
}
}
나는이 그 초기 주문을 유지하는 것이라고 생각하지만, 그렇지 않습니다. 이것은 A, B, C를 가중치 1로 입력 할 때 발생합니다. 설문 조사 A; 그리고 D, E도 가중치 1을 추가합니다. 어쨌든 D와 E는 B 다음 C 순으로 정렬됩니다.
PriorityQueues에 대한 반복자가 올바른 순서를 반환하지 않기 때문에 순서를 보는 기능 - 요소가 큐를 떠나는 순서를 볼 수 있으며 원하는 경로를 명확하게 따르지 않습니다.
제안 사항?
@Stephan : 업데이트 된 답변 – Cratylus
방금 else if 문을 추가하여 자체 compareTo를 수정했습니다. 그러나 답의 실제 고기에 관해서 - 완벽, 고마워! – USS1994