Java 基于索引的SortedSet子集
我需要将Java 基于索引的SortedSet子集,java,collections,sortedset,Java,Collections,Sortedset,我需要将sourceList中的对象添加到一个集合中,该集合在向集合中添加对象时对集合进行排序。我正在考虑使用 基于某些条件,我需要获取图书集的子集。子集将是前N个元素。N的值只有在从另一个sourceList准备好整个bookSet后才能知道 无论如何,我可以使用索引N获取bookSet的子集,类似于arrayList.subList(0,N) 我可以使用,但我需要知道N+1元素 取决于您的目标: 您可以使用TreeSet.iterator()并迭代N次 在Java8中,您可以使用bookS
sourceList
中的对象添加到一个集合中,该集合在向集合中添加对象时对集合进行排序。我正在考虑使用
基于某些条件,我需要获取图书集
的子集。子集将是前N个元素。N
的值只有在从另一个sourceList
准备好整个bookSet
后才能知道
无论如何,我可以使用索引N获取bookSet的子集,类似于arrayList.subList(0,N)
我可以使用,但我需要知道N+1元素 取决于您的目标:
- 您可以使用
并迭代TreeSet.iterator()
N次
- 在Java8中,您可以使用
bookSet.stream().limit(N)
- 您只需复制到一个
,然后获取一个子列表新的ArrayList(bookSet)
headSet()
,然后调用iterator()
,然后迭代接下来的N个元素。您需要迭代集合并获得前N个元素。这将是线性时间,或者如果您仍然拥有sourceList的句柄,那么从sourceList中获取N+1元素,然后调用headSet
。sourceList中的元素是随机排序的。看起来第三个选项就是我要找的:)选项3将消除您自己的迭代,但在引擎盖下,它也会这样做,如果你的收藏量很大,最好选择选项1,这样可以避免复制整个收藏收藏量不大。最大元素数可以是16。如果您真的需要选项3,那么只需对原始列表进行排序并获取子列表。
TreeSet bookSet