1 | public static void sort(LinkedList<Fraction> list)
|
2 | {
|
3 | LinkedList sorted = new LinkedList();
|
4 | while(!list.isEmpty())
|
5 | {
|
6 | Fraction min = Fraction.takeMin(list);
|
7 | sorted.add(min);
|
8 | }
|
9 | System.out.println("x1 "+ list.size());
|
10 | list = sorted;
|
11 | System.out.println("x2 "+ sorted.size());
|
12 | System.out.println("x3 "+ list.size());
|
13 | }
|
Die Methode sortiert eine Liste. Zuert wird eine neue Liste "sorted"
erstellt und dann werden nach und nach aus der alten Liste "list" die
kleinsten Objekte der Klasse "Fraction" rausgenommen und an "sorted"
drangehöngt. Zum Schluß bekommt "list" die Referenz von "sorted". Die
Testausgaben x1 = 0, x2 = 7 und x3 = 7 sind bei einer Beispielliste der
Länge 7 korrekt. Die Liste "list" ist ja am Ende leer, da ich mit der
Methode Fraction.takeMin(list) alle Objekte rausgenommen habe. Wenn ich
nun diese Methode von irgendwo anders aufrufe, bekomme ich eine Liste
der Länge 0 zurück. Ich kann mir das gar nicht erklären. Was passiert
da? Ganz am Ende der Methode hat die Liste noch die Länge 7 und gleich
danach 0. Merkwürdig ...