Hallo nochmals zusammen,
ist es in Java möglich ein Array um ein Element zu erweitern ohne eine Tmporäres/neues Array zu initialisieren?
Habe in C# schon einmal danach gesucht (bin orginal C#-programmierer) blieb aber unfündig (neues Wort?). (PS: C# is MS-Version of Java, [gibt auch .Net-Applets!!!{habe aber im ganzen I-Net noch keins Gefunden, aber auch nicht gesucht }]).
Zurück zum Thema: gibt es eine Alternativ zu Array? eine welche add(object) unterstützt?
Remove wäre auch noch nützlich!
Moien
nimm Vectoren. (java.util.Vector) oder Arraylist (java.util.ArrayList). Arraylist ist schneller wenn sich die Länge des Datensatz wenig ändert, Vectoren sind schneller wenns um hinzufügen/löschen geht.
cu
Ich wuerde ArrayList nehmen, da ich gelesen habe, dass Vector nicht mehr benutzt werden sollte:
http://forum.java.sun.com/thread.jspa?threadID=57598…
Eine ArrayList ist eine Implementierung des List-Interfaces, was selbst wiederum von dem Interface Collection abgeleitet wurde. Andere Collections sind z.b. Map (Impl: HashMap) oder Set (Impl: TreeSet).
Fuer eine detaillierte Erklaerung der Collections empfehle ich waermstens:
http://www.galileocomputing.de/openbook/javainsel6/j…
hallo
generell: ein array hat eine fix vordefinierte länge, die sich nicht mehr ändern lässt. man kann lediglich den array in einen längeren reinkopieren und den original-array dann wegschmeissen.
eine arraylist ist intern nix anderes als ein array, der eine bestimmte initialgrösse hat. werden zusätzliche elemente reingelegt, wird der interne array in einen grösseren kopiert und der alte weggeschmissen. also die obige strategie, nur fix und fertig vorprogrammiert.
ein vector ist praktisch das selbe wie eine arraylist, allerdings threadsafe und daher etwas langsamer. wenn du also nur mit einem thread arbeitest oder explizit threadsafe programmierst, kannst du auf die schnellere arraylist zurückgreifen.
sowohl vector als auch arraylist implementieren das list-interface, weshalb sie ähnlich zu programmieren sind.
da intern jeweils arrays verwendet werden, sind vectoren sowie arraylists optimal, wenn man gezielt auf einzelne elemente zugreifen will (v.a. in beliebiger reihenfolge). sie sind denkbar schlecht, wenn man mitten drinnen was einfügen oder löschen will (dabei muss ständig der gesammte interne array umkopiert werden).
wenn man ständig einfügen oder löschen muss, sind linkedlists besser. die lassen sich auch prächtig sequentiell abarbeiten. sie sind aber weniger geeignet, um direkt auf einzelne elemente zuzugreifen.
dann gibt es noch sets, die automatisch sortiert sind und für den zugriff über einen schlüssel optimiert sind. und und und…
was besser ist, kann man generell nicht sagen - hängt extrem vom verwendungszweck ab. was im einen fall noch unschlagbar schnell ist ist im anderen fall völlig unbrauchbar.
lg
erwin
Auch hallo.
Unter C# gibt es für solche Fälle eine „Collection“.
Unter Java: http://www.galileocomputing.de/openbook/javainsel6/j…
mfg M.L.