Возвращает все значения связанного списка стека Dynami c в методе toString - PullRequest
0 голосов
/ 10 июля 2020

Я пытаюсь понять, как вывести все версии узла "latest" с помощью метода toString, но я не понимаю, как заставить while l oop работать правильно в этом случае. Мне было интересно, есть ли способ go для этого.

Вот метод toString():

    public String toString() {

        String output = "key: " + key ;
        Node<VersionedObject> currNode = latest;
        
        while (latest != null){
            output += latest+ "\n\t";
            latest.setNext(latest);
        } // This isn't particularly working


        //return "key: " + key +"\n\t" +latest + "\n\t" + latest.getNext(); // placeholder but it's getting closer. This one is INSANELY specific

        return output;
    }

, вот метод, который создает список:

    public StackOfVersionedObjects(String key, final Object object) {
        this.key = key;
        VersionedObject vrObject = new VersionedObject(object);
        latest = new Node<VersionedObject>(vrObject);
    }

, а вот мой класс ноды:

    public class Node<T> {

    private T    data;
    private Node next;

    public Node() {
        data = null;
        next = null;
    }

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

    public T getData() {
        return data;
    }

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

    public void setData(T data) {
        this.data = data;
    }

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

    @Override
    public String toString() {
        return data.toString();
    }
}

1 Ответ

2 голосов
/ 10 июля 2020

Измените latest на currentNode и l oop вот так

@Override
public String toString() {
    StringBuilder builder = new StringBuilder();
    builder.append("key: " + key);
    Node<VersionedObject> currNode = latest;
  
    while (currNode != null){
        builder.append(currNode + "\n\t");
        currNode = currNode.getNext();
    }

    return builder.toString();
}
...