Okay, ich mache einfach nen neuen Thread auf in dem ich das eigentliche Problem nochmal deutlicher mache:
Wer die Klasse list hat so wie sie für's Abitur vorgegeben wird, kanns ja mal testen. Was man sehen wird ist, dass die Ausgabe der "Neuen Liste" vollständig gelingt. Die Ausgabe der "alten Liste" ist jedoch leer. Dies liegt daran das list1 und list2 auf dasselbe Objekt verweisen - klare Sache.
Bei folgendem Programm hab ich vermutet das es sich genauso verhält:
Hier sollten "hatAhnenBaum" und "lBaum" auf das gleiche Objekt verweisen oder? Ist aber scheinbar nicht so, denn wenn man sich mal "lBaum" und "hatAhnenBaum" ausgeben lässt, sieht man das "lBaum" nur aus einer Wurzel und einem Nachfolger (Blatt) besteht während "hatAhnenBaum" ein ganzer Ahnenbaum inklusive des neu hinzugefügten Element...
Warum ist dies so???? Sind nicht "hatAhnenBaum" und "lBaum" einfach Referenzen auf ein und dasselbe Objekt der Klasse BinTree ebenso wie "liste1" und "liste2" Referenzen auf ein und dasselber Objekt der Klasse List sind!?
Wo ist mein Denkfehler bzw die Erklärung für den Unterschied!?
Lg, kit fisto!
Java:
List liste1 = new List();
String out1 = "";
String out2 = "";
for(int i=0;i<5;i++)
{
liste1.insertBehind(""+i);
}
List liste2 = liste1;
liste1.toFirst();
liste2.toFirst();
while(!liste2.isBehind())
{
out2 = out2 + (String)liste2.getItem();
liste2.next();
}
while(!liste1.isBehind())
{
out1 = out1 + (String)liste1.getItem();
}
System.out.println("neue Liste: "+out1);
System.out.println("alte Liste: "+out2);
Bei folgendem Programm hab ich vermutet das es sich genauso verhält:
Java:
public void fuegeHinzu(Ahne pAhne, String pLinie) {
BinTree lBaum = hatAhnenbaum;
while (pLinie.length() > 1) {
if (pLinie.charAt(0) == 'm') {
lBaum = lBaum.getLeftTree();
}
else {
if (pLinie.charAt(0) == 'v') {
lBaum = lBaum.getRightTree();
}
} // if else
pLinie = pLinie.substring(1);
} // while
BinTree lNeuBlatt = new BinTree(pAhne);
if ((pLinie.charAt(0) == 'm') {
lBaum.setLeftTree(lNeuBlatt);
}
else {
if ((pLinie.charAt(0) == 'v') {
lBaum.setRightTree(lNeuBlatt);
}
} // if else
}
Warum ist dies so???? Sind nicht "hatAhnenBaum" und "lBaum" einfach Referenzen auf ein und dasselbe Objekt der Klasse BinTree ebenso wie "liste1" und "liste2" Referenzen auf ein und dasselber Objekt der Klasse List sind!?
Wo ist mein Denkfehler bzw die Erklärung für den Unterschied!?
Lg, kit fisto!