Eigene LinkedList - toString

foerster7891

Aktives Mitglied
Hi,
wollte fragen, wie man für eine LinkedList welche nur ListItems behinhaltet welche Objekte beinhalten, bei denen man im vornherein noch nicht den Typ kennt, ein String draus macht?

Zumindest sollen wir dazu eine Methode toString erstellen, die die gesamte Liste als String zurück gibt.
 
k habs jetzt...

fand das anfangs verwirrend^^.

kann mir noch wer sagen, wie man ne equals schreibt die eine gesamte LinkedList mit einer anderen auf Gleichheit überprüft, im Sinne von "jedes Element der einen Liste, ist auch in der gleichen Reihenfolge in der anderen und in beiden sind auch gleich viele"?
 
kann mir noch wer sagen, wie man ne equals schreibt die eine gesamte LinkedList mit einer anderen auf Gleichheit überprüft, im Sinne von "jedes Element der einen Liste, ist auch in der gleichen Reihenfolge in der anderen und in beiden sind auch gleich viele"?
Einfach synchon über beide iterieren und die
Code:
equals()
der Elemente aufrufen. Wenn die eine Liste zu Ende ist schaust Du, ob Du in der anderen noch Elemente übrig sind. Falls Du eine
Code:
size()
Methode hast kannst Du die Länge kannst natürlich auch zuerst prüfen und bei Ungleichheit die Iteration sparen...

Aber Denk dran: equals sollte nicht ohne dazu passende
Code:
hashcode()
implementiert werden!
Object (Java 2 Platform SE 5.0)

bye
TT
 
Zuletzt bearbeitet:
Java:
public boolean equals( Object obj ) {
        if ( obj instanceof LinkedList )         	
        	for ( int i = 1; i < size; i++ )
        		if ( !( ( ( LinkedList ) obj ).get( i ) == this.get( i ) ) ) 
        			return false;
        else return false;
        return true;
    }

Kann mir jemand sagen warum die false ausgibt wenn ich zwei Listen mit je 2 Elementen (Strings) erzeuge die beide den gleichen Inhalt haben und vergleiche?
 
Java:
public boolean equals( Object obj ) {
        if ( obj instanceof LinkedList )         	
        	for ( int i = 1; i < size; i++ )
        		if ( !( ( ( LinkedList ) obj ).get( i ) == this.get( i ) ) ) 
        			return false;
        else return false;
        return true;
    }

Kann mir jemand sagen warum die false ausgibt wenn ich zwei Listen mit je 2 Elementen (Strings) erzeuge die beide den gleichen Inhalt haben und vergleiche?
Weil man klammern nicht immer weglassen kann.

Hier sind die nötig weil der Compiler sich nicht an Deine Intension hält und den
Code:
else
Zweig dem letzten
Code:
if
zuordnet, dass er gesehen hat, welches dummer Weise das innere ist. Tu Dir und uns einen Gefallen und lass Deine IDE die Klammern automatisch setzen... Automatisches Formatieren hätte den Fehler übrigens auch offenbart...

bye
TT
 
Jede der Abfragen, Schleifen kann genau ein Element ungeklammert intern abarbeiten
damit ist jede Folgeanweisung genau der zuletzt gesetzten Abfrage zugeordnet. Andernfalls würde es ja zu einem Syntaxfehler führen.

Habs trotzdem gerade mit Klammern versucht. Den Part mit dem vergleichen von Strings über equals hab ich auch eingefügt. Leider kommt immer noch false.
 
Jede der Abfragen, Schleifen kann genau ein Element ungeklammert intern abarbeiten
Ja, nur ist
Code:
else
eben kein eigenständiges Element..

damit ist jede Folgeanweisung genau der zuletzt gesetzten Abfrage zugeordnet. Andernfalls würde es ja zu einem Syntaxfehler führen.
Java:
if(false)
  if(true)
     ;
   else // dies sieht der Compiler
     ;
else // dies hast Du nicht geschrieben.
;


Habs trotzdem gerade mit Klammern versucht. Den Part mit dem vergleichen von Strings über equals hab ich auch eingefügt. Leider kommt immer noch false.
Ja, weil man Strings nicht mit
Code:
==
vergleicht, sonder (wie alle Objekt) nit
Code:
equaks()
.

bye
TT
 
Das zweite else hatte ich weggelassen, da wenn eine Ungleichheit auftritt die Methode mit return false sich beendet.
Du wolltest aber (laut Deiner Einrückung) das erste
Code:
else
weg lassen. Dein inneres
Code:
 if
hat also die Schleife schon beim ersten Durchlauf mit
Code:
false
verlassen, entweder im
Code:
if
oder im
Code:
else
Zweig...

bye
TT
 
Zuletzt bearbeitet:

Neue Themen


Zurück
Oben