我的方法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;
}}
您可以在每个元素的开头使用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();
}
您的列表仅被前向链接,因此您可以使用临时ArrayList并将每个元素添加到索引0。