![]() |
|
|
|||||||
| Java Basics - Anfänger-Themen Fragen ausschließlich zu Java-Grundlagen von Ein- und Umsteigern |
|
|
|
Themen-Optionen | Thema durchsuchen | Ansicht |
| #1 (permalink) | |||
|
Stammbenutzer
Kilobyte
Registriert seit: 25.12.2009
Beiträge: 121
Abgegebene Danke: 7
Erhielt 6 Danke für 6 Beiträge
|
Ich programmiere Binärbäume. Ich wollte nun in der GUI eine Liste von Bäumen erstellen und jedes Mal, wenn der 'Benutzer' etwas am Baum verändert, werden die Änderungen vorgenommen und der Baum wird der Liste hinzugefügt. Das will ich zumindest abzielen.
Ich arbeite hier mit einer ArrayList und den veränderten Baum in die Liste zu übernehmen, sieht folgendermaßen aus:
Ich könnte natürlich eine Methode einbauen, mit der ich alle Werte des binbaums ermittle und einen ganz neuen Baum erzeuge, aber wäre das nicht zu kompliziert? Habt ihr irgendwelche besseren Vorschläge? Würde mich freuen! Mit freundlichen Grüßen Mujahiddin |
||
|
|
|
| #2 (permalink) | |
|
Stammbenutzer
Megabyte
Registriert seit: 05.01.2007
Beiträge: 2.224
Abgegebene Danke: 4
Erhielt 111 Danke für 111 Beiträge
|
Baum muss Cloneable (Java Platform SE 6) bzw. deren Methode clone() sinnvoll implementieren. Dann hast du folgenden Einzeiler:
__________________
ich bin keine signatur, ich headbang hier nur |
|
|
|
| #3 (permalink) | |
|
Benutzer
Byte
Registriert seit: 25.09.2009
Beiträge: 38
Abgegebene Danke: 1
Erhielt 2 Danke für 2 Beiträge
|
du weißt mit newBaum = binbaum; jedes mal dem neuen baum binbaum zu. jetzt ist es egal mit welcher referenz du was änderst, denn alle zeigen auf binbaum. und deswegen siehst du auch bei jedem baum die änderungen und nciht nur beim neustens
|
|
|
|
| #4 (permalink) | |||||||||||||||||||||
|
Projektleiter Plugin-System
Team Plugin-System
Registriert seit: 29.01.2009
Beiträge: 1.131
Blog-Einträge: 6
Abgegebene Danke: 28
Erhielt 59 Danke für 59 Beiträge
|
ungetestet versuchs mal mit mfg Tomate_Salat Edit Ein Clone-Beispiel:
Geändert von Tomate_Salat (24.02.2010 um 09:15 Uhr) |
||||||||||||||||||||
|
|
|
||||||||||||||||||||
| #5 (permalink) | ||||||||||||||||||||||||||||||||||||||||||||||||
|
Stammbenutzer
Viertel Gigabyte
Registriert seit: 22.04.2007
Beiträge: 3.459
Abgegebene Danke: 1
Erhielt 10 Danke für 10 Beiträge
|
bzw. hinschreiben, bzw. diese ganze ArrayList komplett wegschmeißen, weil's sinnlos ist, dieselbe Referenz zig mal abzuspeichern.
Zusammenfassend: bei n elementen, k Operationen, c Kosten für add/delete/etc clone: O(n*k) speicherverbrauch, O(n+c) laufzeit zur erzeugung des nächsten Zustandes O(1) zugriff auf vorgängerversionen immutable: O(n+k*ln(n)) erwarteter speicherverbrauch O(ln(n)) laufzeit zur erzeugung des nächsten Zustandes O(1) zugriff auf Vorgängerversionen chronik abspeichern: O(n+k) speicherverbrauch O(c) zur erzeugung des nächsten Zustandes O(k*c) zugriff auf Vorgängerversionen so in der Art... da muss man halt selber wissen, was man will...
__________________
aka Andrey Geändert von 0x7F800000 (24.02.2010 um 09:22 Uhr) |
|||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||
| #6 (permalink) | |
|
Stammbenutzer
Kilobyte
Themenstarter
Registriert seit: 25.12.2009
Beiträge: 121
Abgegebene Danke: 7
Erhielt 6 Danke für 6 Beiträge
|
Hilft irgendwie nichts.
Der erste binbaum (der leere, der auch beim Ausführen des Programms direkt gespeichert wird), bleibt bei weiteren Veränderungen noch erfolgreich leer. Der zweite binbaum dann, wenn ich einen Eintrag einfüge, klappt auch. Ab der dritten Veränderung werden alle binbaeume außer der erste leere binbaum mitverändert... Da soll doch mal wer durchblicken... Ich bin überfragt... Weiß wer weiter? Liebe Grüße. E: sry, hab nur den zweiten Beitrag gelesen als ich das hier schrieb ![]() @ Ox7... seite 295 is nich dabei aber ich überleg mir das dann mal später noch... Geändert von Mujahiddin (24.02.2010 um 09:29 Uhr) |
|
|
|
| #7 (permalink) | |||||||||||||||||||
|
Stammbenutzer
Viertel Gigabyte
Registriert seit: 06.04.2005
Beiträge: 2.761
Blog-Einträge: 12
Abgegebene Danke: 23
Erhielt 122 Danke für 113 Beiträge
|
|
||||||||||||||||||
|
|
|
||||||||||||||||||
| #8 (permalink) | |||
|
Stammbenutzer
Kilobyte
Themenstarter
Registriert seit: 25.12.2009
Beiträge: 121
Abgegebene Danke: 7
Erhielt 6 Danke für 6 Beiträge
|
mit final, super.clone() und beides zusammen probiert, das ist ihm aber egal.
Bei Ausführen des Programms = leerer Baum wird erzeugt. Bei binbaum.add(new Knoten(blabla)); übernehmen alle Bäume der ArrayList (mit Ausnahme des ersten Baums) die Felder des veränderten Binärbaums. Heißt: Ausführen: List<Baum(leer)>; Add: List<Baum(leer), Baum(addedKnoten)>; Add: List<Baum(leer), Baum(addedKnoten, newAddedKnoten), Baum(addedKnoten, newAddedKnoten)>; ---- richtig wäre: List<Baum(leer), Baum(addedKnoten), Baum(addedKnoten, newAddedKnoten)>; Quellcode:
|
||
|
|
|
| #9 (permalink) | |||
|
Stammbenutzer
Megabyte
Registriert seit: 05.01.2007
Beiträge: 2.224
Abgegebene Danke: 4
Erhielt 111 Danke für 111 Beiträge
|
Du musst natürlich die Methode
clone() noch implementieren, z.B. so:
__________________
ich bin keine signatur, ich headbang hier nur |
||
|
|
|
|
| Lesezeichen |
Latex Maths & Physics Editor ...
|
| Themen-Optionen | Thema durchsuchen |
| Ansicht | |
|
|
Ähnliche Themen
|
||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Java Medien Bibiothek | Jennifer22 | AWT, Swing & SWT | 1 | 15.01.2010 11:13 |
| Jtable Werte ohne Enter übernehmen | Enton | AWT, Swing & SWT | 9 | 27.10.2009 13:35 |
| Werte in ein Textfeld übernehmen | Alex_winf01 | AWT, Swing & SWT | 4 | 08.04.2008 16:38 |
| table mit dynamische Werte in Aplet zeichnen | leo | Deployment | 3 | 30.01.2006 17:05 |
| per Mausklick Werte übernehmen | orakeldermacht | Java Basics - Anfänger-Themen | 2 | 24.01.2005 23:03 |