Einfach verkettet List: Ausgabe ohne null

Jefferio_19

Mitglied
Ich habe ein kleines Problem. Ich habe eine einfach verkette Liste erstellt, die auch funktioniert, will ich diese ausgeben wird mir ganz am Schluss ein null mit ausgegeben. Kann man das irgendwie verhindern?

Die Haupt Liste:
Java:
public class List <T>{
    
    T element;
    List<T> next = null;

    public List(T element) {
        this.element = element;
    }

    public T getElement() {
        return element;
    }

    public void setElement(T element) {
        this.element = element;
    }

    public List<T> getNext() {
        return next;
    }

    public void setNext(List<T> next) {
        this.next = next;
    }

    @Override
    public String toString() {
        return element + "," + next;
    }
  
}

ListElement:
Java:
public class ListElement<T> implements IList{
    List<T> head = null;
    List<T> tail = null;
    int size;

    public ListElement() {
    }

    public void add(T data){
        List<T> obj=new List<>(data);
        
        if (head==null){
            obj.next=null;
            head=obj;
            tail=obj;
        }else{
            tail.next=obj;
            obj.next=null;
            tail=obj;
        }
        size++;
    }

    @Override
    public boolean isEmpty() {
       return size==0;
    }

    @Override
    public T head() {
        return this.head.getElement();
    }

    @Override
    public IList tail() {
        ListElement k1 = new ListElement();

        for (int i=1; i<this.size; i++){
            k1.add(head.next.getElement());
            this.head=head.getNext();
        }
        return k1;
    }

    @Override
    public int size() {
        return size;
    }

    @Override
    public IList filter(ISelect filterPredicate) {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }
    
    public ListElement<T> next(){
        ListElement l1=new ListElement();
        l1.head=head.getNext();
        l1.size=size;
        return l1;
    }

    @Override
    public String toString() {
        return head + " "+ "size=" +size;
    }

}


Die size wird mir auch richtig ausgegeben. Füge ich beispielsweise die Worte: "Tennis" "Fußball" "Hockey" ein, wird mir folgendes ausgegebenen:

Tennis, Fußball, Hockey, null size=3

Das null möchte ich jedoch nicht ausgeben.
 

hauptDev

Bekanntes Mitglied
Wahrscheinlich liegt es an der Schleife hier:
Java:
 for (int i=1; i<this.size; i++){
k1.add(head.next.getElement());
this.head=head.getNext();
}

Nehmen wir an deine Liste hat 5 Elemente (heißt 0 bis 4), und dein 'head' zeigt schon von Beginn auf das erste Element, wird der Head im letzten Schritt auf null gesetzt.

Zustand am Ende eines Schleifendurchlaufs
i = 0 | head => Element 1
i = 1 | head => Element 2
i = 2 | head => Element 3
i = 3 | head => Element 4
i = 4 | head => Element 5 (null)

Ansonsten ist es auch immer ratsam einfach mit dem Debugger Schritt für Schritt durchzugehen und die Werte zu prüfen.
 

stg

Top Contributor
Ich vermute, du gibst zuerst den Wert des nächsten Elementes aus und überprüfst erst dann, ob es null ist.

Es wird gar nicht überprüft, sondern einfach nur rekursiv die Liste ausgegeben.

Wahrscheinlich liegt es an der Schleife hier:
....

Nein, liegt es nicht. Was hat das denn mit der Frage zu tun?


Was Gucky schreibt geht schon in die richtige Richtung, auch wenn er sich offenbar auch keine 5 Sekunden den Code angeschaut hat :D
In die toString() Methode deiner Liste gehört noch eine gescheite Abbruchbedingung.
 

hauptDev

Bekanntes Mitglied
Nein, liegt es nicht. Was hat das denn mit der Frage zu tun?
Okay, liegt es nicht, sehe ich ein.
Hätte es das aber, dann hätte es auch was mit der Frage zu tun, weil der head auf null gesetzt wäre und somit
auch so ausgegeben würde.
Da es das aber nicht ist, ist das irrelevant.
 

Jefferio_19

Mitglied
OK danke.
Aber ist denn so eine Abbruchbedingung in der toString Methode "guter Programmierstil" ?
Generell: Habt ihr Verbesserungsvorschläge an der Liste?
 

stg

Top Contributor
Die Abbruchbedingung in der toString Methode ist in Ordnung und im Grunde hast du sowieso schon eine drin, nur sieht man sie nciht auf den ersten Blick.
Ich würde hingegen eher eine zusätzliche "printList" Methode schreiben und dir toString Methode gar nicht dafür benutzen den inneren Zustand der Liste auszugeben, aber das ist wohl zum Teil auch Geschmackssache.

Mach dir zunächst mal Gedanken über deine Namensgebung. Ich garantierte dir sonst, dass du jedesmal darüber stolpern wirst, wenn du deine Klassen hier irgendwo anders einsetzen willst.
 
Zuletzt bearbeitet:

Gucky

Top Contributor
@stg
Hast recht. Es waren keine 2, weil ich grade wenig Zeit hatte.

@Jefferio_19
Vielleicht hilft dir ein Konstrukt, wie "if (next == null)" weiter.
 

dter

Mitglied
Er könnte das Listenelement als innere Klasse in List implementieren und es wäre kein schlechter Stil.
Es kommt, wie so oft, auf den Anwendungsfall an.
 
Zuletzt bearbeitet:

Gucky

Top Contributor
Jefferio_19 hat gesagt.:
in eine Klasse verbinden

Das klang so, als ob Verwaltung und Element der Liste dieselbe Klasse sein sollen und das ist schlechter Stil ;)
Zumindest in dem Zusammenhang. Mir ist aber kein Fall bekannt, wo das nützlich sein könnte.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Einfach-Verkettete-Listen Ausgabe zeigt nur 1. und letzte instanz Java Basics - Anfänger-Themen 2
berserkerdq2 Wozu benötigt man den BiPredicate, kann ich nicht einfach eine normale Methode nutzen, statt BiPredicate? Java Basics - Anfänger-Themen 3
I Programm erkennt nicht an das Array zurückgegeben wird trotz Initialisierung *einfach* Java Basics - Anfänger-Themen 9
R einfach verkettete Liste Java Basics - Anfänger-Themen 1
R einfach verkettete Liste Java Basics - Anfänger-Themen 12
N Erste Schritte HelloWorld möchte einfach nicht laufen Java Basics - Anfänger-Themen 11
K Programm stoppt einfach ohne Grund Java Basics - Anfänger-Themen 4
V einfach verkettete Listen Java Basics - Anfänger-Themen 10
N Best Practice Doppelte und einfach Anführungsstriche in Runtime.getruntime().exec() Java Basics - Anfänger-Themen 6
O Exception behandlung einfach Ueben mit Fakt! Java Basics - Anfänger-Themen 10
C Methoden Über eine einfach verkettete Liste Java Basics - Anfänger-Themen 8
Hanschyo Programm schließt sich einfach Java Basics - Anfänger-Themen 2
O Einfach verkettete Liste - Revert Methode Java Basics - Anfänger-Themen 1
S Einfach verkettete Liste Element an bestimmter Position einfügen Java Basics - Anfänger-Themen 24
S Einfach verkette Liste Java Basics - Anfänger-Themen 27
Hacer Operationen einfach verketteter Listen Java Basics - Anfänger-Themen 22
R Erste Schritte Verkettete Liste will einfach nicht in meinen Schädel Java Basics - Anfänger-Themen 11
C Methoden Einfach verkette Liste - int Werte aufsteigend sortieren Java Basics - Anfänger-Themen 1
V Codezeile wird einfach nicht ausgeführt Java Basics - Anfänger-Themen 23
M Quadrat zeichnen einfach bitte! Java Basics - Anfänger-Themen 2
K Einfach Verkettete Liste - addFirst() Java Basics - Anfänger-Themen 7
N Einfacher Rechner (für mich nicht so einfach) Java Basics - Anfänger-Themen 5
M Array in ein Array übertragen (möglichst einfach) Java Basics - Anfänger-Themen 6
T Input/Output Daten/Objekte einfach speichern Java Basics - Anfänger-Themen 5
R Methoden... ich vesteh sie einfach nicht Java Basics - Anfänger-Themen 15
llabusch Verkette Listen - Einfach und Doppelt Java Basics - Anfänger-Themen 3
X Einfach verkettete Liste, keine Fehlermeldung Programm friert ein Java Basics - Anfänger-Themen 4
C Erste Schritte Problem mit der Division von Koeffizienten... oder einfach nur irgendwlechen zahlen Java Basics - Anfänger-Themen 10
D Klassen Klassen, Objekte, Konstruktor - einfach erklärt Java Basics - Anfänger-Themen 12
B Variable wird einfach so wieder auf "null" gesetzt Java Basics - Anfänger-Themen 12
T Elemente im Vector werden einfach überschrieben! Java Basics - Anfänger-Themen 3
X Einfach Verkettete Liste Java Basics - Anfänger-Themen 16
S ich begreife es einfach nicht -> zweck der Schnittstellen Java Basics - Anfänger-Themen 27
J Interface Wie funktioniert das mit den Interfaces. Ich verstehe es einfach nicht! :( Java Basics - Anfänger-Themen 15
W Java-Programm als Icon mit Doppelklick einfach öffnen ? Java Basics - Anfänger-Themen 3
M Layout einfach bilden Java Basics - Anfänger-Themen 4
I Weiß einfach nicht mehr weiter... Java Basics - Anfänger-Themen 3
K Datentypen Einfach/Doppelt verkettete Liste Java Basics - Anfänger-Themen 4
N einfach verkettete liste fehler Java Basics - Anfänger-Themen 5
O Wie kann man das einfach lösen? (dynamisch viele Attribute) Java Basics - Anfänger-Themen 6
N einfach verkettete liste Java Basics - Anfänger-Themen 3
A If-Schleife spinnt - ganz einfach Code - Riesen Problem :) Java Basics - Anfänger-Themen 9
Luk10 einfach animation Java Basics - Anfänger-Themen 2
B OOP Einfach verkettete Liste - rekursive Methoden Java Basics - Anfänger-Themen 1
E JMC - Dlls einbinden - möglichst einfach Java Basics - Anfänger-Themen 8
S einfach verkettete Liste Java Basics - Anfänger-Themen 19
I einfach verkette Liste Java Basics - Anfänger-Themen 9
H Typumwandlung String --> Int (ganz einfach) Java Basics - Anfänger-Themen 9
O Observer - Einfach erklärt? Java Basics - Anfänger-Themen 5
T Einfach verkettete Liste: Wie Elemente löschen? Java Basics - Anfänger-Themen 4
K Ich verstehe switch einfach nicht Java Basics - Anfänger-Themen 4
M jar-Datei einfach umbenennen? Java Basics - Anfänger-Themen 8
D Einfach verkettete Liste Java Basics - Anfänger-Themen 20
S Filewriter schreibt einfach nicht Java Basics - Anfänger-Themen 6
G Opjektorientierte Programmierung (OOP). einfach für euch Java Basics - Anfänger-Themen 4
X WAV conversion ist einfach nicht möglich Java Basics - Anfänger-Themen 2
J jar erstellen. Es klappt einfach nicht Java Basics - Anfänger-Themen 14
L Eingeben Rechnen Ausgeben - Leider nicht so einfach Java Basics - Anfänger-Themen 31
P einfach frage zur vererbung Java Basics - Anfänger-Themen 9
G Frank A. - ports einfach öffnen und schließen Java Basics - Anfänger-Themen 3
M Caeser Verschlüsselung ganz einfach(nicht für mich) Java Basics - Anfänger-Themen 6
L while wird einfach übersprungen? Java Basics - Anfänger-Themen 4
D einfach berechnung einer onlinezeit Java Basics - Anfänger-Themen 25
B Thread will einfach nicht stoppen Java Basics - Anfänger-Themen 12
B Packages einfach kopieren? Java Basics - Anfänger-Themen 13
N Mein Applet findet -online- einfach die Klasse nicht ! Java Basics - Anfänger-Themen 6
S Java rundet einfach auf 0 Java Basics - Anfänger-Themen 2
C einfach verkettete Liste -> Elemente vertauschen Java Basics - Anfänger-Themen 2
L Ein Bild auf ein JFrame legen. nicht so einfach? =( Java Basics - Anfänger-Themen 11
M Tablelayout einbinden - ich schaff's einfach nicht Java Basics - Anfänger-Themen 16
D Button Text will einfach nicht erscheinen Java Basics - Anfänger-Themen 6
M Methoden. ich versteh das einfach nicht! Bitte helfen! Java Basics - Anfänger-Themen 4
H Kann man in Java einfach einen Beep erzeugen Java Basics - Anfänger-Themen 2
C einfach aber komisch Java Basics - Anfänger-Themen 5
R einfach verkettete Liste, intersect Java Basics - Anfänger-Themen 4
P Restart Button für einfach Applikation Java Basics - Anfänger-Themen 7
H RAF geht einfach nicht Java Basics - Anfänger-Themen 12
D RegEx Probleme - wahrscheinlich zu einfach. Java Basics - Anfänger-Themen 2
E einfach verkettete liste, nullPointerException Java Basics - Anfänger-Themen 5
H Einfach Datenübergabe Java Basics - Anfänger-Themen 4
S RegEx Syntax - ich verstehe sie einfach nicht! Java Basics - Anfänger-Themen 3
V Teil eines Programms funktioniert einfach nicht Java Basics - Anfänger-Themen 2
V If Schleife wird beim ausführen einfach ignoriert Java Basics - Anfänger-Themen 4
D Einfach Leerzeile einfügen ? Java Basics - Anfänger-Themen 2
G Owner von JDialog;Komme einfach nicht weiter Java Basics - Anfänger-Themen 4
B Applet geht einfach nicht Java Basics - Anfänger-Themen 16
S UIManager kann einfach nicht aufgelöst werden Java Basics - Anfänger-Themen 4
R Einfach if-Abfrage Java Basics - Anfänger-Themen 7
B Eine Linie zeichnenmit Java, ich verstehe das einfach nicht Java Basics - Anfänger-Themen 4
A Einfach, gut erklärte Übungen!!! Java Basics - Anfänger-Themen 3
B Hashing (verkettet/double) Java Basics - Anfänger-Themen 0
D verkettet Liste einfuege Problem Java Basics - Anfänger-Themen 6
M Listen richtig doppelt verkettet? Java Basics - Anfänger-Themen 13
D Array List mit Objekten sortieren Java Basics - Anfänger-Themen 2
J Array.list vergleichen Java Basics - Anfänger-Themen 1
B Vektor vs List Java Basics - Anfänger-Themen 4
volcanos Addition -> List<Integer> mit Arrays.asList() versus List<Integer>ArrayList<>() Java Basics - Anfänger-Themen 14
H Interface Wieso "List<String> list = new ArrayList<>[…]" Java Basics - Anfänger-Themen 4
T Linked List set-Methode Java Basics - Anfänger-Themen 2
volcanos List & ArrayList nach Familiennamen abfragen Java Basics - Anfänger-Themen 57

Ähnliche Java Themen

Neue Themen


Oben