# TreeSet-Ausgeben



## Bitstubbi (11. Jun 2012)

Hallo zusammen 

Ich bin bastel derzeit an einem Sax-Parser. Nun muss ich nur noch eine Ausgabe produzieren. Ich habe  ein TreeSet mit Strings gefüllt und möchte diese nun alphabetisch ausgeben (daher auch treeSet ;-) ). Ich komme mit der API einfach nicht weiter weil es keine get-Methoden gibt. Meine Idee sah wie folgt aus:


```
private void print() {
	        for (int i = 0; i < KeySet.size(); i++) {
	         //ungültiger Code:
                 //System.out.println(KeySet.get(i));             
	                   }
		}
```

so bzw so ähnlich hab ich es immer bei Maps gemacht. Jedoch gibt es leider keine get-Methode. 
Ich hoffe ihr könnt mir helfen. Danke von mal im Vorraus.

Edit: Ich hab mir kurz die Größe des Sets ausgaben lassen : 3085077 also recht groß und stimmt auch mit dem Erwartenden Ergebnis überein.
Hatte grade die Idee aus der TreeMap eine HashMap zu machen und mit einem Comperator zuarbeiten. was haltet ihr davon?


----------



## bygones (11. Jun 2012)

```
TreeSet<String> t = ...
Iterator<String> it = t.iterator();
while(it.hasNext()) {
   System.out.println(it.next());
}
```



> Hatte grade die Idee aus der TreeMap eine HashMap zu machen und mit einem Comperator zuarbeiten. was haltet ihr davon?


Haengt von deinem Anwendungsfall ab - muss die Map immer und zu jedem Zeitpunkt sortiert sein, so sollte es eine TreeMap sein ( bzw TreeSet - was du eben brauchst). Wenn sie nur am Ende einmal sortiert werden braucht, reicht auch ne Map die dann einmal zu einer TreeMap wird


----------



## Bitstubbi (11. Jun 2012)

Sehr gut Danke dir


----------



## SlaterB (11. Jun 2012)

wäre interessant wie du es bei Map geschafft hast, weil es dort auch keine get-Index-Methode wie bei List gibt, 
keySet() von Map liefert gar ein Set usw.


----------



## Bitstubbi (11. Jun 2012)

Ja eine richtige get-Methode gibts echt nicht aber so sieht meine Standartausgabe aus:


```
private void journalTable() {
		System.out.println("publisher  /  count\n");
	       for (String str: journalMap.keySet()) {
	    	   int n = journalMap.get(str).intValue();
	           System.out.println(str + ' ' + n);       
	       }
	   }
```


----------



## SlaterB (11. Jun 2012)

genau die dürfte hier auch funktionieren wenn du sprachlich naheliegend KeySet an Stelle von journalMap.keySet() einsetzt,

get(Index) fällt aus,
Iterator ist möglich aber eher unhandlich lang,
die 'erweiterte for-Schleife', wie man sie nennt, ist die Kurzform für den Iterator, benutzt diesen intern

Erweiterte For-Schleife


----------



## Bitstubbi (11. Jun 2012)

bygones Idee funktioniert auch sehr gut  und is recht bequem  ... 
ich hab so oder so noch ein paar Ausgaben vor mir. Ist zwar kein CleanCode aber ich werde beides mal testen  

Danke für die beiden schnellen Antworten


----------



## bygones (11. Jun 2012)

was Slater schreibt ist schon richtig, fuer ein TreeSet geht auch einfach 

```
for(String s : theTreeSet) {
 System.out.println(s);
}
```


----------



## Bitstubbi (11. Jun 2012)

so hab ichs jetzt klein und kompakt find es die beste lösung


----------

