2014-10-10 5 views
5

Ich habe erfolgreich eine LinkedList von Grund auf neu erstellt. Bis jetzt kann es nur Daten hinzufügen. Keine Löschung oder etwas Ähnliches.Wie drucke ich die Daten in meiner LinkedList

Ich kann Zeichenfolgen, Ganzzahlen usw. hinzufügen, aber ich habe ein Problem mit dem Drucken der Daten, die ich hinzugefügt habe. Wie mache ich das? Ich schätze, ich muss es zuerst durchlaufen, aber wie?

Hier ist meine Klasse Node:

public class Node { 
    T data; 
    Node<T> nextNode; 

    public Node(T data) { 
     this.data = data; 
    } 

    public String toString() { 
     return data +""; 
    } 
} 

Hier ist die LinkedList Klasse:

public class LinkedList <T> { 

Node<T> head; 
Node<T> tail; 

public void add (T data) { 
    // where to add statements. if its empty or not 
    Node<T> node = new Node<T> (data); 

    if (tail == null) { // empty list 
     // nothng in the node = tail = node; 
     head = node; 
     tail = node; 
    } 
    else { // non empty list, add the new boogie train to the tail 
     tail.nextNode = node; // new node pointing to tail 
     tail = node; // update 
    } 
} 

Und hier ist das wichtigste. Wo erstelle ich ein Objekt aus der Linkedlist und benutze die generische add Methode, um meine Daten hinzuzufügen. Aber wie drucke ich es auf dem Bildschirm aus? Danke im Voraus.

public static void main(String[] args) { 
    LinkedList<Object> list = new LinkedList<Object>(); 
    list.add(15); // boogie1 = head 
    list.add(16); 
    list.add(10); // boogie end = tail 
+0

Entschuldigung für den versauten Code. Es scheint immer kaputt zu sein, wenn ich versuche Code hinzuzufügen. – Kharbora

+0

Sie müssen nur kopieren und drücken Sie Strg + K. Wenn du es richtig formatiert und Leerzeichen für den Einzug benutzt hast, bleibt es so. – EpicPandaForce

Antwort

1

Sie haben die toString() Methode in Ihrer LinkedList<T> Klasse außer Kraft zu setzen

6

eine Methode toString auf Ihre Klasse LinkedList hinzufügen

public String toString() { 
    Node<T> curr = head; 
    StringBuilder sb = new StringBuilder(); 
    sb.append("LinkedList ["); 
    while (curr != null) { 
     sb.append(curr.data); 
     if (curr.nextNode != null) { 
      sb.append(", "); 
     } 
     curr = curr.nextNode; 
    } 
    sb.append("]"); 
    return sb.toString(); 
} 

es dann in der Haupt Methode aufrufen:

System.out.println(list.toString()); 
+0

Kompliziert und schwer zu verstehen Ihren Code, aber danke. – Kharbora

+0

was findest du schwer daran? – yunandtidus

1

Nun, Sie können entweder das Iterator-Muster implementieren: http://sourcemaking.com/design_patterns/iterator/java/1

Oder Sie nur eine Methode implementieren, die entweder das Knotenelement drucken können, oder etwas auf jeden von ihnen ausführen, etwa wie folgt aus:

public class LinkedList <T> { 

    Node<T> head; 
    Node<T> tail; 

    public void add (T data) { 
     ... 
    } 

    public void forEach(java.util.function.Consumer<T> consumer) 
    { 
     for(Node<T> currentNode = head; currentNode != null; currentNode = currentNode.nextNode) 
     //I am assuming the last node points to null in nextNode 
     // and that head is initialized to null if the list is empty 
     { 
      consumer.accept(currentNode); 
     } 
    } 
} 

Dann tun nur

linkedList.forEach(x -> System.out.println(x.toString()); 

Wenn alles ist richtig, das sollte in Java 8 funktionieren.

1

Erstellen Sie eine Getter-Methode in Ihrer LinkedList-Klasse.

public Node getHead() { 

    return head; 
} 

in Ihrem main()

public static void main(String[] args) { 

    LinkedList<Object> list = new LinkedList<>(); 
    list.add(15); // boogie1 = head 
    list.add(16); 
    list.add(10); // boogie end = tail 

    Node node = list.getHead(); 

    // Break the loop after the variable reaches null, i.e. end of list. 
    // The un initialised instance non-primitive variable is always null by default. 
    while(node != null) { 

     System.out.println(node); // Calls the toString() from class Node. 
     node = node.nextNode; // Move to next node. 
    } 
} 

Hoffnung funktioniert dies für Sie.

Verwandte Themen