Stack

stack是什么

Stack类代表最先进先出(LIFO)堆栈的对象。 它扩展了类别Vector与五个操作,允许一个向量被视为堆栈。 设置在通常的push和pop操作,以及作为一种方法来peek在堆栈,以测试堆栈是否为empty的方法,以及向search在栈中的项目的方法在顶部项目和发现多远它是从顶部。

当首次创建堆栈时,它不包含任何项目。

Deque接口及其实现提供了更完整和一致的LIFO堆栈操作集,这些接口应优先于此类。 例如:

   Deque<Integer> stack = new ArrayDeque<Integer>(); 
package stack;

import java.util.EmptyStackException;
import java.util.Stack;

public class Test {
	 static void showpush(Stack<Integer> st, int a) {
	        st.push(new Integer(a));
	        System.out.println("push(" + a + " )");
	        /**
	         * 这里不能使用“push(a)”因为这样会把a直接输入出去,此时的a就变成了一个字母,而不是那个参数
	         * 这里的+ 是字符串 拼接的意思 ,把变量a中存的字符串拼接起来,这里只有a自己。
	         */
	        System.out.println("stack: " + st);
	    }
	 
	    static void showpop(Stack<Integer> st) {
	        System.out.print("pop -> ");
	        Integer a = (Integer) st.pop();
	        System.out.println(a);
	        System.out.println("stack: " + st);
	    }
	 
	    public static void main(String args[]) {
	        Stack<Integer> st = new Stack<Integer>();
	        System.out.println("stack: " + st);
	        showpush(st, 42);
	        showpush(st, 66);
	        showpush(st, 99);
	        showpop(st);
	        showpop(st);
	        showpop(st);
	        try {
	            showpop(st);
	        } catch (EmptyStackException e) {
	            System.out.println("empty stack");
	        }
	    }

}

扩展

package stack;

import java.util.Stack;

public class Test1 {
			public void test(int x) {
		        Stack<Integer> s1 = new Stack<Integer>();
		        Stack<Integer> s2 = new Stack<Integer>();
		        s1.push(x);
		        s2.push(x);
		        int p1 = s1.peek();
		        int p2 = s2.peek();
		        System.out.println(p1==p2);
		        //比较的是这个值是否相等
		        System.out.println(s1.peek() == s2.peek());
		        //比较的是栈地址是否相等
		}
		public static void main(String[] args) {
			Test1 t = new Test1();
			t.test(127);
			t.test(128);
		}
}

原因:

在Javah中,使用这个stack这个类,里面的push函数,如果存入的值的范围为(-128,127)之内的话,无论是==,还是比较他们的peek值,都是true,如果不在这个范围的话,只有==是true,而他们的peek的==,是false。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值