Почему NavigableSet JavaDoc заявляет о деталях реализации? - PullRequest
5 голосов
/ 08 мая 2019

Почему NavigableSet JavaDoc с указанием метрик производительности, если это только интерфейс?

Если, теоретически, интерфейс не знает подробностей о своих реализацияхКак интерфейс NavigableSet может описать:

«Производительность восходящих операций и представлений, вероятно, будет выше, чем у нисходящих».

Существует аналогичноеpost здесь но ConcurrentSkipListSet является реализующим классом.

1 Ответ

3 голосов
/ 08 мая 2019

Не существует "реального" способа обеспечить такое поведение в Java, поэтому документация используется для описания ожидаемого поведения интерфейса с точки зрения производительности.

Это важно для двух аспектов.

Во-первых, как пользователь этого интерфейса (или любого класса, который его реализует), вы должны учитывать это соображение производительности и соответственно писать свой код.Например, в приведенной вами параграфе отмечается, что «производительность восходящих операций и представлений, вероятно, будет выше, чем у нисходящих».Это означает, что если вы хотите выполнить итерацию по NavigableSet, вам, вероятно, следует выполнить итерацию от начала до конца, а не наоборот (даже при том, что оба будут работать!).

Во-вторых, как разработчик этогоинтерфейс, вы должны знать, что это ожидание, и что пользователи интерфейса, вероятно, написали свой код, чтобы принять это поведение во внимание (как объяснено в предыдущем параграфе).Это означает, например, что вы могли бы реализовать NavigatableSet, где производительность нисходящей операции лучше, чем производительность ее восходящего аналога, но вы, вероятно, не должны - этопросто пользователи не ожидают, что этот класс будет работать.

...