Zum neuen Informatik-Forum >>
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

String[][] Einträge verlängern

 
Dieses Forum ist gesperrt, du kannst keine Beiträge editieren, schreiben oder beantworten.   Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten.    Informatikerboard.de Foren-Übersicht -> Java/JSP
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
veryvarious



Anmeldungsdatum: 12.07.2006
Beiträge: 6

BeitragVerfasst am: 13. Jul 2006 10:24    Titel: String[][] Einträge verlängern Antworten mit Zitat

Hallo,

ich habe einen 2-dimensionalen Array "list = new String[2][] " und schreibe die Werte aus zwei anderen Array so hinein.
list[0] = String[] x;
list[1] = String[] y;

Jetzt würde ich gerne falls sich String[] x ändert diese Änderungen wieder in list[0] schreiben bzw. anhängen ohne die bereits darin stehenden Werte zu überschreiben.

Weiss jemand einen adäquaten Lösungsweg?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Tobias



Anmeldungsdatum: 15.02.2005
Beiträge: 149

BeitragVerfasst am: 13. Jul 2006 14:04    Titel: Antworten mit Zitat

Verstehe ich nicht.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
veryvarious



Anmeldungsdatum: 12.07.2006
Beiträge: 6

BeitragVerfasst am: 13. Jul 2006 14:33    Titel: Antworten mit Zitat

Hatte ich es vielleicht schlecht erklärt?

Dies ist mein Funktion!

public listTX(String[] lista,String[] listb) {
this.lists = new String[2][];
lists[0] = lista;
ists[1] = listb;
}

Wenn ich jetzt diese Funktion ein zweites mal aufrufen würde, würden meine Wert in list[0] bzw. list[1] mit den neuen Werten von lista bzw. listb überschrieben werden.

Ich wüsste gerne ob es eine Möglichkeit gibt das die neue lista bzw. listb an die Werte list[0] bzw. list[1] angehängt werden.

Ich hoffe Du verstehst was ich meine!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Tobias



Anmeldungsdatum: 15.02.2005
Beiträge: 149

BeitragVerfasst am: 13. Jul 2006 14:58    Titel: Antworten mit Zitat

Achso.

Die eine Möglichkeit ist, ein neues Array für lista zu erstellen, was die größe der alten + der neuen Liste hat. Dann kannst du die Werte alle in das neue Array rüberschreiben.

Für dynamisch erweiterbare Listen sind allerdings verlinkte Listen sinnvoller. Eine Implementation bietet z.B. ArrayList.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
veryvarious



Anmeldungsdatum: 12.07.2006
Beiträge: 6

BeitragVerfasst am: 14. Jul 2006 07:53    Titel: Antworten mit Zitat

Ja so hab ich mir das auch irgendwie gedacht, aber leider bekomme ich es nicht hin, hast Du vielleicht einen Link zu einem Beispielcode?
Bis dahin werde ich weiter herum experimentieren!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Senior Sanchez



Anmeldungsdatum: 19.06.2006
Beiträge: 9

BeitragVerfasst am: 14. Jul 2006 20:59    Titel: Antworten mit Zitat

Tobias hat Folgendes geschrieben:
Achso.

Die eine Möglichkeit ist, ein neues Array für lista zu erstellen, was die größe der alten + der neuen Liste hat. Dann kannst du die Werte alle in das neue Array rüberschreiben.

Für dynamisch erweiterbare Listen sind allerdings verlinkte Listen sinnvoller. Eine Implementation bietet z.B. ArrayList.


Da war jetzt natürlich nen kleiner Fehler drin Augenzwinkern

ArrayList ist ne List-Implementierung, aber keine verlinkte Liste, sondern eine Liste die die Elemente in Arrays speichert Augenzwinkern Daher ja auch der Name.

Was du vllt mehr meinst ist die LinkedList, das ist eine verkettete Liste.

Effizienter für simples anhängen ist natürlich die LinkedList, da sie das quasi in konstanter Zeit erledigt, während die ArrayList der Komplexitätsklasse n zuzuordnen wäre, da ja erstmal Speicher fürs neue Array allokiert werden muss und danach jedes Objekt ins neue Array kopiert werden muss Augenzwinkern

Dafür bieten ArrayLists aber schnelleren Zugriff auf jedes Element und zwar in konstanter Zeit, egal welches Element gefragt ist, da man ja über den Index leicht das Objekt finden kann. LinkedList erledigt das im Mittel in n/2 er Zeit, aber ist natürlich ein linearer Algorithmus von Nöten.

Aber wie es Tobias sagte, sind Listen der Erfolg.


public void listTx(String[] lista, String[] listb) {
list_one.addAll(Arrays.asList(lista));
list_two.addAll(Arrays.asList(listb));
}

Das wars schon Augenzwinkern Sofern ich dich richtig verstanden habe.

list_one bzw. list_two implementierst du dann als Instanz-Variable innerhalb der Klasse am besten so:

private List<String> list_one = new LinkedList<String>();
private List<String> list_two = new LinkedList<String>();

So, da haben wir jetzt auch noch nen richtig schönen Stil mitreingebracht Augenzwinkern

Die Methode setzt instanzierte list_one und list_two Objekte voraus, ansonsten hagelt es ne NullPointerException. Diese ruft jetzt einfach die addAll Methode auf, die eine Collection an das Ende der Liste hängt. Collections sind Klassen die das Interface Collection Implementieren, wie zum Beispiel listen. Um nun aus den übergebenen Arrays eine List zu bekommen wird die statische Methode asList aufgerufen die ein Objekt-Array (oder wie bei Java 5 var args) in eine List-Darstellung überführt.
Diese Liste wird dann an unsere gewünschte Liste gehangen.


Zur Instanziierung der Listen noch: Meine Implementierung hier setzt Java 5 voraus, da Generics verwendet werden die ein get aus der Liste erleichtern und absichern, da wir nicht mehr auf String casten müssen. Vorher gibts das allerdings nicht.

Was man aber unbedingt machen sollte ist gegen List zu programmieren und nicht gegen z.B. LinkedList. Durch die Verwendung des List-Interfaces können wir die Implementierung ganz leicht austauschen, aus einer LinkedList kann so ganz schnell ein Vector oder eine ArrayList werden indem wir nur eine einzige Zeile ändern müssen! Würden wir dagegen direkt gegen LinkedList programmieren könnte es sein dass wir LinkedList-spezifische Methoden verwenden die aber ArrayList nicht kennen würde.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
veryvarious



Anmeldungsdatum: 12.07.2006
Beiträge: 6

BeitragVerfasst am: 18. Jul 2006 11:34    Titel: Antworten mit Zitat

Okay super ich jetzt haut es hin vielen Dank!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Dieses Forum ist gesperrt, du kannst keine Beiträge editieren, schreiben oder beantworten.   Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten.    Informatikerboard.de Foren-Übersicht -> Java/JSP Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum nicht herunterladen