Java,打印堆栈值

Arm*_*ani 8 java stack

在Java中,我想打印Stack的内容.该toString()方法将它们打印在用逗号分隔的方括号中:[foo, bar, baz].

问题是,我如何摆脱它们并仅打印变量?

我的代码到目前为止:

Stack myStack = new Stack ();
for(int j=0;j<arrayForVar.length;j++) {
if(arrayForVar[j][1]!=null) {
  System.out.printf("%s \n",arrayForVar[j][1]+"\n");
  myStack.push(arrayForVar[j][1]);
}
System.out.printf("%s \n",myStack.toString());
Run Code Online (Sandbox Code Playgroud)

这个答案对我有用:

使用toStringStack上的方法,并使用replaceAll方法用blankstring替换方括号的所有实例.像这样:

System.out.print(
    myStack.toString().replaceAll("\\[", "").replaceAll("]", ""));
Run Code Online (Sandbox Code Playgroud)

Joh*_*ohn 10

有一个解决方法.

您可以将其转换为数组,然后将其打印出来Arrays.toString(Object[]):

System.out.println(Arrays.toString(myStack.toArray()));


Jes*_*oyd 5

stack.forEach(System.out::println);
Run Code Online (Sandbox Code Playgroud)

使用 Java 8 和更高版本的流函数


Mar*_*nik 2

使用与填充堆栈相同类型的循环并根据您的喜好打印各个元素。没有办法改变 的行为toString,除非你走子类化的路线Stack,我不推荐这样做。如果 的源代码Stack在您的控制之下,那么只需修复那里的实现即可toString