【问题标题】:toString reverse order in javajava中的toString倒序
【发布时间】:2020-06-06 18:24:20
【问题描述】:

我的方法 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;
}}

【问题讨论】:

    标签: indexing linked-list reverse tostring


    【解决方案1】:

    您可以在每个元素的开头使用 StringBuilderinsert 而不是附加它:

    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();
    }
    

    【讨论】:

      【解决方案2】:

      您的列表只是前向链接的,因此您可以使用临时 ArrayList 并将每个元素添加到索引 0。

      【讨论】:

        猜你喜欢
        • 2010-10-22
        • 1970-01-01
        • 2011-12-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-20
        • 2018-08-01
        • 2013-09-08
        相关资源
        最近更新 更多