Bin zu müde zum umdenken... mache grade ein Praktikum bei Siemens, und die machen das auch so rudimentär wie vor 20 Jahren...
Wenn ich dann irgendwann meine 20 Präsentationen und meine Abschlusspräsentation vorm großen Chef, sowie meine 50 Seiten Fachbericht weg habe werde ich mich mal "weiterbilden"...
Set ist ein Interface, HashSet ist ein Implementierung, TreeSet eine andere, die Doku erklärt die Unterschiede dir reicht das HashSet.
xysawq hat gesagt.:
Bin zu müde zum umdenken... mache grade ein Praktikum bei Siemens, und die machen das auch so rudimentär wie vor 20 Jahren...
Wenn ich dann irgendwann meine 20 Präsentationen und meine Abschlusspräsentation vorm großen Chef, sowie meine 50 Seiten Fachbericht weg habe werde ich mich mal "weiterbilden"...
Wie maki schon geschrieben hab bietet sich hier ein Set wunderbar an:
Code:
// sa ist hier dein besagtes String[] hab ja keine Ahnung wo das her kommt :)
Set<String> strings = new HashSet<String>();
for (int i = 0; i < sa.length; i++) {
strings.add(sa[i]);
}
// Das Set enthält jetzt alle im String[] sa vorhandenen Strings und zwar jeden max. 1x
// Wenn du jetzt umbedingt wieder ein String[] haben willst kannst du auch einfach folgendes machen
sa = string.toArray(new String[0]);
Wenn du kein Swing einsetzt welches Vector erzwingt, solltest du die modernen Collections verwenden, Vector und Hashtable sind überbleibsel aus der pre-Collections Ära, wurden zwar nachträglich geändert, allerdings fehlt die klare Linie.
An dieser Stelle bietet es keinen Vorteil. Dass ich Set statt HashSet genommen habe liegt bei mir daran, dass ich an solchen Stellen immer die Interfaces nehme wenn es möglich ist.
Bei Lists mache ich das immer genauso
Code:
List list = new ArrayList(); // Generics ma außen vor gelassen :)
Ein Vorteil kann hier vielleicht sein, dass ich bei List / Set nicht an einen festen Typ von Set / List gebunden bin. Lege ich ein HashSet an dann habe ich eben ein HashSet. Lege ich aber ein Set an (z. B. eben dann mit = new HashSet) kann ich an einer späteren Stelle aber auch sagen = new TreeSet ohne mir ein neues Objekt machen zu müssen.
Ist ein schlechtes Beispiel aber vielleicht verstehst du was ich meine
Also ich weiß nicht, wie oft ich das heute bereits von dir gelesen habe,
aber so langsam werde ich durch diese Sätze auch (*gäähhnn*) zu
müde zum weiterle.... *schnarch*
Vector ist eigentlich "veraltet". Mit java 1.2 kam das neue Collection Framework und
Vector wurde da reingedrückt um irgenwie zu passen. Aus kompatibilitätsgründen kann
die Klasse nicht entfernt werden. Stack erbt von Vector (brrrrrrr).
für diese Funktionalität List benutzen. Wenn synchronosiert sein soll
Collections.synchronizedList(list)