# Vector<String> element entfernen/ersetzen



## Kreye (12. Februar 2010)

Hallo, 
erstmal vorweg, super Forum hier.

Ich habe folgendes Problem, ich habe einen Vector in dem String stehen, nun 
möchte ich aus diesem Vector ein Element an belieber stelle entfernen können 
oder ändern.

habe es schon mir replace() versucht, aber das funktioniert irgendwie nicht.

schonmal Danke für eure Hilfe


----------



## zerix (12. Februar 2010)

Hallo,



> erstmal vorweg, super Forum hier.


Warum meldest du dich denn nicht an ;-)

Replace von String? Das wird auch nicht funktionieren, da es einen neuen String erstellt. Müssen die Strings in einer gewissen Reihenfolge stehen?

Entferne doch den String aus dem Vector und füge den neuen String mit add hinzu. Wenn er an eine gewisse Stelle stehen soll, kannst du das mit addElementAt tun.

Wenn es keinen bestimmten Grund gibt, dass du einen Vector nimmst, würde ich dir vorschlagen die ArrayList zu verwenden, da sie um einiges schneller ist.

Gruß

Sascha


----------



## Kreye (12. Februar 2010)

Keine Sorge, werde mich jetzt wohl noch anmelden.

Erstmal Danke für den Hinweis das ArrayList schneller ist.
Lese Streams ein und habe das aus nem Javabuch übernommen und dort war es mit Vectoren.
Vielleicht stelle ich das noch auf ArrayList um.

Ich hatte das auch schon so versucht, mit dem entfernen und dem neu anlegen.
Hatte aber nicht funktioniert. Ich war schon am verzweifeln und schon nen halben Tag am probieren udn dann anscheinend 
den Wald vor lauter Bäumen nicht mehr gesehen.
Denn anscheinend hatte ich dort irgendwo nen Fehler drin, denn jetzt habe ich es nochmal gemacht und es funktioniert. 

Vielen dank.


----------



## Anime-Otaku (17. Februar 2010)

Aus einem Vector oder ArrayList etwas zu entfernen ist von der performance her sehr schlecht. Da alles was hinter der jeweilgen Stelle kommt, nachgeschoben werden muss.

Prinzipiell gibt es die remove Funktionen (siehe API).

Weißt du den index, den du löschen willst oder nur welches String Objekt?

Wenn du den Index weißt, würde ich dir eine LinkedList empfehlen. Ansonsten kommt es drauf an, wie groß die Liste sein kann.


----------



## Vereth (18. Februar 2010)

Es gibt viele verschiedene Collection-Klassen mit unterschiedlichen Möglichkeiten. Du solltest dir sehr genau überlegen, was du mit deinen Daten machen möchtest, um dann die richtige Klasse wählen zu können. Oft genügt eine simple LinkedList, wo man zuerst denkt, dass man einen Zugriff per Index braucht. Auf Indizes kann man oft ohne Leistungseinbußen verzichten, wenn man seine Methoden sorgfältig implementiert. Iterieren kann man alle, wenn man die erweiterte for-Schleife verwendet. Sollen die Daten unique sein? Dann ist vielleicht eine Set-Klasse das richtige für dich, eventuell musst du dann die equal-Methode deiner Klasse überschreiben. Sollen sie sortiert sein? Dann ist vielleicht ein HashTree oder etwas ähnliches die passende Wahl; dafür solltest du dann auch eine passende compareTo-Methode bereitstellen. Überlege dir auch, ob du vor dem organisierten Speichern nicht eine Vorverarbeitung machen kannst, um nicht die Rohdaten zu haben, sondern Daten, die schon passend aufbereitet worden sind.


----------

