Treeset заказать элементы в порядке убывания
вот кусок кода, который я использовал для Java 5.0
TreeSet<Integer> treeSetObj = new TreeSet<Integer>( Collections.reverseOrder() ) ;
коллекций.reverseOrder() используется для получения компаратора, чтобы изменить способ хранения и итерации элементов.
есть ли более оптимизированный способ сделать это?
3 ответов
почему вы думаете, что этот подход не будет оптимизировано? Обратный порядок Comparator
просто будет переворачивать знак вывода из фактического Comparator
(или выход из compareTo
на Comparable
объекты вставляются), и поэтому я бы предположил, что это очень быстро.
альтернативное предложение: вместо того, чтобы изменять порядок хранения элементов, вы можете перебирать их в порядке убывания, используя descendingIterator()
метод.
Если вы используете Java 6, есть метод под названием descendingSet().
descendingSet
public NavigableSet descendingSet ()
нисходящий набор поддерживается этим set, поэтому изменения в наборе отражается в нисходящем множестве, и наоборот. Если набор изменяется при итерации через набор в процессе (за исключением собственная операция удаления итератора), результаты итерации являются не определено.
The returned set has an ordering equivalent to
сборники.reverseOrder (comparator ()). Выражение С. descendingSet().descendingSet() возвращает представление s по существу эквивалентную s.
Specified by: descendingSet in interface NavigableSet<E> Returns: a reverse order view of this set Since: 1.6
TreeSet<Integer> treeSetObj = new TreeSet<Integer>(new Comparator<Integer>()
{
public int compare(Integer i1,Integer i2)
{
return i2.compareTo(i1);
}
});
необходимо перевернуть результат. Но я думаю, что это просто микро-оптимизации... Тебе действительно это нужно ?