обратный порядок toString в java - PullRequest
1 голос
/ 22 февраля 2020

Мой метод toString () должен возвращать строковое представление стека. Строковое представление состоит из элементов стеков в порядке их хранения, заключенного в квадратные скобки. Моя проблема в том, что я сейчас возвращаю [element0, element1, element2, element3, element4], поэтому мне интересно, есть ли простой способ вернуть строку в обратном порядке, т.е. вернуть [element4, element3, element2, element1, element0] вместо этого?

public class Stack<E> implements IStack<E> {
    public String toString() {
    String str = "[";
    if (head != null) {
        str += head.getmElement();
        Node<E> tempNode = head.getmNextNode();
        while (tempNode !=  null) {
            str += ", " + tempNode.getmElement();
            tempNode = tempNode.getmNextNode();
        }
    }
    str += "]";
    return str; }

Класс узла:

public class Node<E> {
private E mElement;
private Node<E> mNextNode;

Node(E data) {

    this.setmElement(data);
}
public E getmElement() {
    return this.mElement;
}
public void setmElement(E element) {
    this.mElement = element;
}
public Node<E> getmNextNode()
{
    return this.mNextNode;
}
public void setmNextNode(Node<E> node)
{
    this.mNextNode = node;
}}

Ответы [ 2 ]

0 голосов
/ 22 февраля 2020

Ваш список связан только с прямой связью, поэтому вы можете использовать временный ArrayList и добавлять каждый элемент с индексом 0.

0 голосов
/ 22 февраля 2020

Вы можете использовать StringBuilder и insert каждый элемент в начале вместо его добавления:

public String toString() {
    StringBuilder sb = new StringBuilder("[");
    if (head != null) {
        sb.append(head.getmElement());
        Node<E> tempNode = head.getmNextNode();
        while (tempNode !=  null) {
            sb.insert(1, ", ").inser(1, tempNode.getmElement());
            tempNode = tempNode.getmNextNode();
        }
    }
    sb.append("]");
    return sb.toString();
}
...