Как получить последние 25 элементов SortedSet?

Существует дешевая надстройка Excel, которая решает эту проблему: SumMatch

SumMatch in action [/g1]

10
задан Steve McLeod 24 February 2009 в 13:13
поделиться

6 ответов

Вам нужен a NavigableSet. Еще необходимо будет сделать это неэффективно, выполняя итерации через целое SortedSet и сбор элементов в a Queue то, что Вы сохраняете обрезанными в 25 элементах.

15
ответ дан 3 December 2019 в 16:31
поделиться

SortedSet<T> был разработан, приняв очень простую итеративную модель, передайте только, таким образом найдя, что вершина n записи легка, но находящая, что последнее потребовало бы дорогого чтения через итератор, поддерживающий окно последних n записей.

NavigableSet<T> добавление в 1,6 решает это (и единственная реализация SortedSet от 1.4 TreeSet реализует его так, это, вероятно, будет понижение замены для Вас).

NavigableSet<T> set = new TreeSet<T>();
// add elements
set.descendingIterator() // iterate over the last n entires as needed
4
ответ дан 3 December 2019 в 16:31
поделиться

Инвертируйте свой вид и возьмите первые 25 объектов. Можно затем инвертировать тех, которые будут эффективны как его только 25 объектов.

Bruce

3
ответ дан 3 December 2019 в 16:31
поделиться

Другая структура данных более подходила бы для этой операции.

Это не изящный путь или очень эффективный, но предположение, что SortedSet в порядке возрастания, Вы могли получить Последнее () объект и удалить его, храня его в другом списке, и повториться 25 раз. Необходимо было бы затем отложить эти элементы снова!

1
ответ дан 3 December 2019 в 16:31
поделиться

Бросьте Набор в Список и используйте подсписок (). Я не уверен, как производительный это должно создать Список, таким образом, необходимо было бы запустить некоторые тесты. Это, конечно, сделало бы кодирование легким все же.

    List f = new ArrayList( summaries);
    List lastTwentyFive = f.subList( summaries.size() - 25, summaries.size() );
1
ответ дан 3 December 2019 в 16:31
поделиться

Я предполагаю, что это вряд ли будет иметь любое реальное применение в Вашем проекте, но стоит отметить, что Вы могли бы просто смочь отсортировать список в противоположном направлении вместо этого :)

0
ответ дан 3 December 2019 в 16:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: