2016-05-12 13 views
-1

Guten Tag.Java, TreeSet. Können wir Elemente von nicht erstem Element iterieren?

Ich verwende TreeSet, zum Beispiel TreeSet<Integer> t. Und ich möchte alle Zahlen aus Set t zwischen x und y drucken.

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

Wie geht das? Natürlich kann ich t.iterator() bekommen, und Iterator alle Zahlen von Set und Check ist es grands x und weniger y. Zeit Komplexität ist y Schritte. aber wenn y-x ist klein. Es wird besser sein, t.higher() zu bekommen und danach die Elemente in set zu iterieren, bis es kleiner als y ist. Diese Lösung kann in C++ implementiert werden. Und es ist Zeit Komplexität ist log (t.size())+(y-x).

Wie in Java zu tun?

+1

't.subSet (x, y)'. –

+1

'tSet (x, falsch, y, falsch)' wenn Sie 'x . – zapl

Antwort

1

Sie können die Schnittstelle (die TreeSet implementiert) verwenden. Zum Beispiel:

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); 
} 

Output:

2 
3 
4