ServiceReference. compareTo определяется с точки зрения service.ranking и service.id. Однако кажется, что service.ranking может обновляться динамически/асинхронно через ServiceRegistration. setProperties. Это означает, что compareTo между двумя ServiceReference может варьироваться от вызова к вызову, что делает ServiceReference непригодным для всех типичных применений Comparable. Например, Arrays.sort будет плохо себя вести, если ранжирование будет обновляться асинхронно во время сортировки, а TreeSet < ServiceReference> будет повреждено, если service.ranking будет обновляться вообще.Почему ServiceReference реализует Comparable?
Почему ServiceReference реализует Comparable? Казалось бы, лучше не иметь сравнения вообще, или, по крайней мере, не реализовать Comparable, чтобы не поощрять разработчиков использовать API неадекватно.
Есть ли предложения по структуре данных для поддержки отсортированного списка услуг? В частности, для использования методами DS bind для мощности = "0..n" ссылок.
Вы можете отсортировать список, предположив, что ни один не будет обновлен во время (надеюсь, короткого) времени, в котором выполняется сортировка, и отобразите «текущий» рейтинг. Повторяйте каждые несколько секунд, и у вас есть «живой дисплей». – bdares
Я мог бы это сделать или украсить-sort-undecorate. Сложность времени для этого невелика, и это все еще возвращает меня к # 1. –