java我创建 了一个栈请问应该怎么取里面的值

都说栈是先进后出,我怎么打印出来还是10,11,12.不是12,11,10呢?
请问我这样取栈的值正确吗?应该怎么取值并且打印看到效果啊?
并且是先进后出的效果,非常感谢大家。

public static void main(String[] args) {
Stack<Integer>s=new Stack<Integer>();
s.push(10);
s.push(11);
s.push(12);
Stack<Integer>s1=new Stack<Integer>();
for(int i=0;i<s.size();i++){
System.out.println(s.get(i));
}

栈的确是后进先出,并没有问题,首先进指的是压入栈顶:push()
而出指的是从栈顶移除对象,即取到并移除:pop()
这里可以这么理解,我们知道Stack是Vector的子类,而Vector跟ArrayList一样底层都是以数组实现的,
所以你这里读取的结果就会想数组一样,从头到尾,
但是栈顶指的是数组的尾部,压入栈顶,从栈顶移除,就相当于从数组尾部压进去,并从数组尾部移除一样。

这是我的理解。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-08-30
使用
s.pop()
取值
栈机制是后进先出,所以你只能依次取出顶层数据
第2个回答  2013-08-30

用s.pop();

        for (int i = 0; i < s.size(); i++) {
            System.out.println(s.pop());
        }

Stack 是List接口的子类,get的方式获取是List族的共有方法,你的取法没有错,怎么用,看你的业务要求

追问

我弄出来了用的迭代器,还是谢谢你
Stacks=new Stack();
s.push(10);
s.push(11);
s.push(12);
Iteratoris=s.iterator();
while (is.hasNext()) {
System.out.println(s.pop());
}
}
}

追答

迭代器和for循环是类似的,关键是你用了pop方法

本回答被网友采纳
第3个回答  2013-08-30
for(int i=s.size()-1;i>=0;i--){ 这样可以解决,

这种是i表明解决。
第4个回答  2013-08-30
for(int i=s.size()-1;i>=0;i--){
System.out.println(s.get(i));
}
相似回答