ERLEDIGT
NEIN
NEIN
ANTWORTEN
17
17
ZUGRIFFE
1079
1079
EMPFEHLEN
-
ändert leider nix, immernoch gleiche ausgabe.
wäre mid -1 ja aber auch unlogisch der index fängt ja bei 0 an, und wenn man 0 übergibt wäre for(int i=0; i < 0-1;i++), womit die schleife übersprungen wird, genau wie bei index 1.
wie gesagt, das problem ist nicht outofbounds.
ich hab da grad ne idee, das das alles nicht klappt weils über nen start pointer läuft, ich versuch grad was umzubauen das ein hilfsobjekt erstellt wird, das sich wie start verhält, und das es dann dadrüber die schleife durchgehtGeändert von I2oxxi (19.01.12 um 12:08 Uhr)
-
Ich rate ja nicht rum. Ich kann es mit den Änderungen kompilieren, Elemente einfügen und bekomme die korrekte Anzahl ausgegeben.
-
hm also ich hab deins übernommen und bekam immernoch die falsche anzahl.
jedoch habe ich es jetzt so umgeschrieben, das es bei mir funktioniert:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
public boolean add(T element) { ListenElement<T> elementInList = this.start; if(elementInList==null) { this.start = new ListenElement<T>(element); this.start.setNachfolger(null); this.start.setVorgänger(null); } else { while(elementInList.getNachfolger()!=null) { elementInList=elementInList.getNachfolger(); } ListenElement<T> myElement = new ListenElement<T>(element); myElement.setNachfolger(null); myElement.setVorgänger(elementInList); elementInList.setNachfolger(myElement); } return true; }
Edit:: meine add(index,obj) klappt jetzt auch, da konnte ich dine index-1 gebrauchen
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
public void add(int index, T element) { ListenElement<T> elementInList = this.start; if(index==0) { if(elementInList==null) { this.start = new ListenElement<T>(element); this.start.setNachfolger(null); this.start.setVorgänger(null); } else { ListenElement<T> hilfselement = new ListenElement<T>(this.start.getObj()); hilfselement.setNachfolger(this.start.getNachfolger()); hilfselement.setVorgänger(this.start); this.start.setObj(element); this.start.setVorgänger(null); this.start.setNachfolger(hilfselement); } } else if(index==1) { ListenElement<T> myElement = new ListenElement<T>(element); myElement.setVorgänger(this.start); myElement.setNachfolger(this.start.getNachfolger()); if(this.start.getNachfolger()!=null) { this.start.getNachfolger().setVorgänger(myElement); } this.start.setNachfolger(myElement); } else { for(int i=0; i<index-1; i++) { elementInList=elementInList.getNachfolger(); } ListenElement<T> myElement = new ListenElement<T>(element); myElement.setVorgänger(elementInList); if(elementInList.getNachfolger()==null) { myElement.setNachfolger(null); } else { myElement.setNachfolger(elementInList.getNachfolger()); elementInList.getNachfolger().setVorgänger(myElement); } elementInList.setNachfolger(myElement); } }
Edit2::
Ich hab da nochmal ne ganz Java spezifische frage. clear soll ja die liste löschen. Wie läuft das jetzt mit dem Garbage Collector ab? Objekte kann man ja nicht selbs löschen, richtig?
heißt, für clear muss ich eigentlich nur start=null machen, und da so keine verbindungmehr besteht, da der startpointer leer is wird ja die ganze liste leer, die objekte werden dann von allein gelöscht da sie nicht mehr genutzt werden?
Edit::
Ok, ich habe jetzt alle methoden fertig und alles klappt, das einzige was zu fehlern in der liste führt ist wenn ich add(0,obj) mache, wenn schon ein objekt auf null liegt, also das objekt an die erste stelle gesetzt werden soll (als start) und dann das vorherige start element folgt.
bei 0 klappt iwas nicht da verhaut der mir die ganze liste.
ist jetzt nur der ausschnitt für den fall 0, hab ja mit if ein paar sonderfälle extra behandelt
eigentlich kommen halt noch fall für index=1 und index > 1 aber das hab ich jetz mal weggelassen, das funktioniert alles. nur bei add(0,obj) wenn schon was auf 0 existiert nicht .... also muss der fehler in dem else block liegen. hab auch schon mit this.start = new ListenElement<T>(element); versucht aber des klappt au nich, da verhauts mir auch die listeCode :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
public void add(int index, T element) { ListenElement<T> elementInList = this.start; if(index==0) { if(elementInList==null) { this.start = new ListenElement<T>(element); this.start.setNachfolger(null); this.start.setVorgänger(null); } else { elementInList=new ListenElement<T>(this.start.getObj()); elementInList.setNachfolger(this.start.getNachfolger()); this.start.setObj(element); this.start.setNachfolger(elementInList); this.start.setVorgänger(null); elementInList.setVorgänger(this.start); } } }Geändert von I2oxxi (19.01.12 um 21:47 Uhr)
Ähnliche Themen
-
Generics, statics, reflection || wie baue ich eine static getManager mit generics &
Von toneempire im Forum Java GrundlagenAntworten: 4Letzter Beitrag: 12.01.12, 12:30 -
Frage zu Generics: Unterschied zwischen "Object" und "? extends Object"?
Von DarthShader im Forum JavaAntworten: 10Letzter Beitrag: 14.03.11, 08:20 -
Generics: Rückgabetyp geht nur mit <?> statt mit "<? extends XX>"
Von DarthShader im Forum JavaAntworten: 3Letzter Beitrag: 30.07.10, 13:46 -
Generics: Parametrisierung <?> oder <? extends Object>?
Von DarthShader im Forum JavaAntworten: 5Letzter Beitrag: 10.03.09, 20:55 -
Inhalt einer ArrayList in andere ArrayList kopieren
Von Pierre im Forum .NET ArchivAntworten: 2Letzter Beitrag: 05.07.05, 16:58





Zitieren

Login





