TreeSet
не обеспечивает эффективный метод ранга. Я подозреваю (вы можете подтвердить, посмотрев на его источник), что TreeSet
даже не содержит каких-либо дополнительных битов информации (то есть количества элементов в левом и правом поддеревьях каждого узла), что нужно будет выполнять такие запросы в O (log (n)) время. Так что, похоже, не существует быстрого способа найти ранг элемента TreeSet
.
Если вам действительно это нужно, вы можете реализовать свой собственный SortedSet
с сбалансированным бинарным деревом поиска, которое разрешает такие запросы, или изменить реализацию TreeSet
, чтобы создать новую реализацию, дополненную для разрешения таких запросов. Обратитесь к главе о расширении структур данных в CLRS для получения дополнительной информации о том, как это можно сделать на самом деле.