2013-10-17 1 views
0

Object timeline after sorting날짜 시간 (자바) 타임 라인을 따르지 않을 비교할

이 내가 jodatime의 DateTime 개체를 사용하여 날짜별로 정렬 마친 후 내 객체의 순서입니다. java.util.DateCalendar도 사용해 보았지만 그 결과는 같습니다. 나는 사용자 정의 비교기 (o1.getTime().compareTo(o2.getTime())을 사용하여 PriorityQueue을 사용합니다. 작동해야하지만 알 수 있듯이 - 그렇지 않습니다. 웬일인지, 내가 무엇을 시험해도, 나는 항상 끝내주는 타임 라인으로 끝난다. 객체는 절대로 정렬되지 않습니다. 나는 그 (것)들을 DayOfMonth에 의하여 비교하는 시도하고, 그 후에 일이 일치하는 경우에 HourOfDay에 의하여 그러나 결과는 동일에 남아있다.

나는 약 3 일 동안 내 머리를 두드렸다. 왜 이런 일이 일어나는 지 아무도 모르는 사람이 있습니까?

답변

1

내부 데이터 구조는 (디버거에서 볼 수 있듯이) PriorityQueue에서 항목을 가져 오는 순서를 나타내지 않습니다. poll() 방법을 사용하여 PriorityQueue을 시도하면 제대로 정리 된 날짜가 표시됩니다.

+0

그럼 내가 사용하는 컬렉션 때문이라고 생각하십니까? TreeSet이나 그 무언가로 바꾸려고 노력할 것입니다. 왜냐하면 좀 더 많은 시간 동안 요소를 유지해야하기 때문입니다. – Schadenfreude

+0

PriorityQueue는이 용도로 사용할 수 있습니다. poll()을 사용할 때 우선 순위 큐의 맨 위에있는 요소를 얻습니다.이 요소는 실제로 가장 크거나 작은 요소입니다. poll() 후이 요소는 PriorityQueue에서 제거됩니다. 디버거에서 볼 수있는 것은 poll()을 사용하여 얻을 수있는 것이 아닙니다. – user987339