Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 基于索引的SortedSet子集_Java_Collections_Sortedset - Fatal编程技术网

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