2014-09-16 6 views
1

Мне нужно добавить объекты из sourceList в коллекцию, сортирующую коллекцию при добавлении объектов в коллекцию. Я думаю об использовании TreeSet.Подмножество на основе индексов SortedSet

TreeSet bookSet 

Основываясь на определенных условиях, я должен взять подмножество bookSet. Подмножество будет первым N элементов. Значение N известно только после того, как весь bookSet готовят из другого sourceList.

В любом случае я могу получить подмножество bookSet с использованием индекса N, похожего на arrayList.subList (0, N).

Я могу использовать headSet, но мне нужно знать N + 1-й элемент.

+0

Используйте 'гАрНИтуры()', а затем вызвать 'итератор()' на что и итерацию над следующих N элементов. – markspace

+0

Вам нужно выполнить итерацию по множеству и получить первые N элементов. Это будет линейное время. Или если у вас все еще есть дескриптор на sourceList, то получите N + 1 элемент из sourceList, а затем вызовите 'headSet'. –

+0

Элементы в источникеList произвольно упорядочены. – JavaDeveloper

ответ

2

В зависимости от того, что вы пытаетесь достичь:

  • Вы можете использовать TreeSet.iterator() и перебирать N раз.
  • В Java 8 можно использовать bookSet.stream().limit(N)
  • Вы можете просто скопировать на new ArrayList(bookSet), а затем принять подсписка
+1

Похоже, что третий вариант - это то, что я ищу :) – JavaDeveloper

+1

Вариант 3 устранит повторение самостоятельно, но под капотом он делает то же самое, если ваша коллекция огромна, лучше выбрать вариант 1, это позволит избежать копирования всего коллекция –

+0

Коллекция не огромная. Максимальные элементы могут быть 16. – JavaDeveloper

 Смежные вопросы

  • Нет связанных вопросов^_^