这是我的代码:
public class StackStudy{
public static void main(String[] args){
Stack<String> st = new Stack<String>();
st.push("hi");
st.push("bye");
st.push("awful");
System.out.println(st.toString());
}
}
和控制台打印出来:
[hi, bye, awful]
我以为使用toString将摆脱[],为什么它仍然存在?
编辑: 如果toString不是摆脱[]的正确方法,那么正确的方法是什么?
答案 0 :(得分:2)
因为toString()
(或可能Vector
)的AbstractCollection
方法包含括号(而Stack
继承了toString()
)。您可以通过采用像
String str = st.toString();
System.out.println(str.substring(1, str.length() - 1));
答案 1 :(得分:0)
重写toString()可让您完全控制返回的内容。因此,您可以跳过括号。但是,您只调用了toString()方法(实际上它也是System.out.println()实际上正在执行的操作。因此,结果与预期一致。
答案 2 :(得分:0)
以下代码可以解决问题。
public class StackStudy{
public static void main(String[] args){
Stack<String> st = new Stack<String>();
st.push("hi");
st.push("bye");
st.push("awful");
String stackAsString = st.toString();
System.out.println(stackAsString.substring(1, stackAsString.length() - 1));
}
}