2016-05-12 75 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 
相關問題