Java中的Stack AND Queue

Java中栈和队列的用法
栈的实现
使用Java的集合类Stack

boolean isEmpty();//判断当前栈是否为空,等价于empty();
synchronized E peek();//获得当前栈顶元素
Synchronized E pop();//获得当前栈顶元素并删除
E push(E object);//将元素加入栈顶
Synchronized int search(Object o);//查找元素在栈中的位置,由栈底向栈顶方向数

import java.util.Stack;
public class Solution{
    public static void main(String[] args){
        Stack<Integer> sk=new Stack<Integer>();
        System.out.println(sk.isEmpty());//判断栈是否为空,true
        for(int i=0;i<10;i++){
            int e=sk.push(i+20);//将元素加入栈顶,并返回栈顶元素
            System.out.println(i+":  "+e);
        }
        System.out.println(sk.empty());//判断栈是否为空,false
        System.out.println(sk.pop());//返回栈顶元素,并删除
        System.out.println(sk.peek());//返回当前栈顶元素
        
        System.out.println("first:"+sk.search(20));//查找栈中元素的位置
        System.out.println("last:"+sk.search(29));
    }
}
1234567891011121314151617

借用LinkedList来间接实现Stack
LinkedList是一个继承于AbstractSequentialList的双向链表,也可以当作堆栈、队列、双端队列来使用

栈方法:push(e); 等效方法:addFirst(e);//向栈顶添加元素
栈方法:pop(); 等效方法:removeFirst();//获得当前栈顶元素,并删除
栈方法:peek(); 等效方法:peekFirst();//获得当前栈顶元素

import java.util.LinkedList;
import java.util.Stack;
public class Solution{
    public static void main(String[] args){
        LinkedList<Integer> sk=new LinkedList<Integer>();
        System.out.println(sk.isEmpty());//判断是否为空,true
        //System.out.println(sk.empty());错误,没有这个方法
        for(int i=0;i<10;i++){
            //int e=sk.addFirst(i+20);错误,没有返回值
            sk.addFirst(i+20);//向栈顶添加元素
            System.out.println(i+":  "+(i+20));
        }
        System.out.println("peekFirst:"+sk.peekFirst());
        System.out.println("removeFirst:"+sk.removeFirst());//获得栈顶元素并删除
        System.out.println("peekFirst:"+sk.peekFirst());//获得栈顶元素
    }
}
1234567891011121314151617

队列的实现
Java中有Queue接口 ,而LinkedList实现了Queue接口。因为LinkedList是双向链表,所以很方便的实现队列的所有功能。使用Queue时,尽量避免使用Collection的add()和remove()方法,因为add()和remove()方法在失败时会抛出异常;要使用offer()来加入元素,使用poll()来获取并删除元素,可以通过返回值判断成与否。
队列定义:Queue<E> queue=new LinkedList<E>();

队列方法:offer(e); 等效方法:offer(e)  / offerLast(e);//向队尾添加元素
队列方法:poll(e); 等效方法:poll(e)  / pollFirst(e);//获取队首元素并删除
队列方法:peek(e); 等效方法:peek(e)  / peeFirst(e);//向获取队首元素


code 1

import java.util.LinkedList;
import java.util.Queue;
public class Solution{
    public static void main(String[] args){
        Queue<Integer> queue=new LinkedList<Integer>();
        System.out.println(queue.isEmpty());//判断是否为空,true
        //System.out.println(queue.empty());//错误,没有这个方法
        for(int i=0;i<10;i++){
            //int e=sk.addFirst(i+20);错误,没有返回值
            queue.offer(i+20);//向队尾添加元素
            System.out.println(i+":  "+(i+20));
        }
        System.out.println("peekFirst:"+queue.peek());
        System.out.println("removeFirst:"+queue.poll());//获得队首元素并删除
        System.out.println("peekFirst:"+queue.peek());//获得队首元素
    }
}
1234567891011121314151617


code 2

扫描二维码关注公众号,回复: 11526497 查看本文章

import java.util.LinkedList;
import java.util.Queue;
public class Solution{
    public static void main(String[] args){
        LinkedList<Integer> queue=new LinkedList<Integer>();
        System.out.println(queue.isEmpty());//判断是否为空,true
        //System.out.println(queue.empty());//错误,没有这个方法
        for(int i=0;i<10;i++){
            //int e=sk.addFirst(i+20);错误,没有返回值
            queue.offer(i+20);//向队尾添加元素
            System.out.println(i+":  "+(i+20));
        }
        System.out.println("peekFirst:"+queue.peek());
        System.out.println("removeFirst:"+queue.poll());//获得队首元素并删除
        System.out.println("peekFirst:"+queue.peek());//获得队首元素
    }
}
1234567891011121314151617


code 3

import java.util.LinkedList;
import java.util.Queue;
public class Solution{
    public static void main(String[] args){
        LinkedList<Integer> queue=new LinkedList<Integer>();
        System.out.println(queue.isEmpty());//判断是否为空,true
        //System.out.println(queue.empty());//错误,没有这个方法
        for(int i=0;i<10;i++){
            //int e=sk.addFirst(i+20);错误,没有返回值
            queue.offerLast(i+20);//向队尾添加元素
            System.out.println(i+":  "+(i+20));
        }
        System.out.println("peekFirst:"+queue.peekFirst());
        System.out.println("removeFirst:"+queue.pollFirst());//获得队首元素并删除
        System.out.println("peekFirst:"+queue.peekFirst());//获得队首元素
    }
}
1234567891011121314151617
--------------------- 
作者:紫芝 
来源:CSDN 
原文:https://blog.csdn.net/qq_40507857/article/details/86547895 
版权声明:本文为博主原创文章,转载请附上博文链接!

猜你喜欢

转载自blog.csdn.net/romantic_jie/article/details/96990745
今日推荐