一、使用方法
    1、创建一个栈(java中有Stack包)
    Stack< 存储的数据类型> Stack =new Stack<>();
    2、添加元素
    Stack.push(1);加入值为1的一个元素
    Stack.push(2);加入值为2的一个元素
    Stack.push(3);加入值为3的一个元素
    3、获取栈顶的元素
    int temp1= Stack.peek();拿到了3
    4、删除并获取即将出栈的元素
    int temp2=Stack.pop;得到3,且栈里3已经不在了
    5、判断队列是否为空
    boolen a=Stack.isEmpty;
    6、队列长度
    Stack.size;
    7、遍历
    whlie(!Stack.isEmpty()){
    int t=Stack.pop();
    sout(t);
    }
    二、例题
    class Solution {
    public boolean isValid(String s) {
    int n = s.length();
    if (n % 2 == 1) {
    return false;
    }

    1. Map<Character, Character> pairs = new HashMap<Character, Character>() {{<br /> put(')', '(');<br /> put(']', '[');<br /> put('}', '{');<br /> }};<br /> Deque<Character> stack = new LinkedList<Character>();<br /> for (int i = 0; i < n; i++) {<br /> char ch = s.charAt(i);<br /> if (pairs.containsKey(ch)) {<br /> if (stack.isEmpty() || stack.peek() != pairs.get(ch)) {<br /> return false;<br /> }<br /> stack.pop();<br /> } else {<br /> stack.push(ch);<br /> }<br /> }<br /> return stack.isEmpty();<br /> }<br />}<br />力扣,下一个更大元素<br />class Solution {<br /> public int[] nextGreaterElement(int[] nums1, int[] nums2) {<br /> int length1=nums1.length;<br /> int length2=nums2.length;<br /> Stack<Integer> stack=new Stack<>();<br /> Map<Integer,Integer> map=new HashMap<>();<br />** for(int i=0;i<length2;i++){**<br />** while(!stack.isEmpty()&&stack.peek()<nums2[i]){**<br />**//建立hashmap的映射**<br />** map.put(stack.pop(),nums2[i]);**<br />** }**<br />** stack.push(nums2[i]);**<br />** }**<br /> int []res=new int[length1];<br /> for(int i=0;i<length1;i++){<br /> res[i]=map.getOrDefault(nums1[i],-1);<br /> } <br /> return res; <br />}<br />}