2016-05-12 76 views
-1

美好的一天。Java,TreeSet。我们是否可以迭代不是第一个元素的元素?

我使用TreeSet,例如TreeSet<Integer> t。 而且我想从x和y之间的set t中打印所有数字。

void print(Integer x,Integer y, TreeSet<Integer> t){ 
... 
} 

怎么办? 当然,我可以得到t.iterator(),并且从set和check中迭代所有数字是伟大的x和更少的y。 时间复杂度是y步骤。 但如果y-x很小。得到t.higher()会更好,然后迭代set中的元素直到它小于y。 该解决方案可以用C++实现。 时间复杂度为log (t.size())+(y-x)

在Java中如何做?

+1

't.subSet(X,Y)'。 –

+1

't.subSet(x,false,y,false)'如果你的意思是'x <? zapl

回答

1

您可以使用SortedSet接口(其中TreeSet实现)。例如:

SortedSet<Integer> set = new TreeSet<Integer>(); 

for (int i = 1; i <= 5; ++i) { 
    set.add(i); 
} 

int from = 2; 
int to = 4; 
for (int x : set.subSet(from, to+1)) { // Note that the higher bound is exclusive. 
    System.out.println(x); 
} 

输出:

2 
3 
4 
相关问题