compareTo and equals в PriorityQueues

меня немного смущает все: «Если порядок, наложенный c на S, несовместим с equals, отсортированный набор (или отсортированная карта) будет вести себя странно». предупреждения в Javadoc. Я даже не уверен, что PriorityQueue - это то, что мне нужно ...

Моя ситуация такова: У меня есть класс Event с целочисленной меткой времени и некоторыми другими полями. Я ищу структуру данных, в которую я могу вставить эти события и сортирует события по метке времени. У разных событий может быть одна и та же временная метка, поэтому - если я правильно понимаю - compareTo и equals будут несовместимы.

Мой первый подход заключался в том, чтобы позволить событию реализовать Comparable и предоставить compareTo следующим образом: public int compareTo (Event e) { вернуть this.timestamp - e.getTimestamp (); }

Я не понимаю, как я должен это решить. Я думал о создании собственного компаратора, но такое же предупреждение о странном поведении появляется и в javadoc компаратора. Я не хочу вставлять несколько одинаковых экземпляров события, я просто хочу, чтобы они были отсортированы по отметке времени.

Заранее спасибо за вашу помощь :)

Изменить:
Я просто хочу, чтобы события были отсортированы по отметке времени. Вполне может быть, что два разных события имеют одинаковую метку времени. Таким образом, compareTo вернет 0, потому что они имеют одинаковую метку времени и равны для целей сортировки. Но equals () не вернет true, потому что это разные события.
Я не уверен, что PriorityQueue - это то, что нужно использовать. Я посмотрел на SortedSet, но там были те же предупреждения о согласованности compareTo и equals.
Может я подхожу к этому не с той точки зрения, не знаю ...

6
задан foobar 25 June 2011 в 16:09
поделиться