java栈和队列是什么?分别要怎么实现?

TheDisguiser 2020-06-08 22:01:30 java常见问答 4110

在java中,栈与队列都是学习java语言不能避免的,你知道它们都是什么概念吗?它们该如何在java中实现呢?快一起来看看吧。

一、栈概念与实现示例

在系统中,java的堆和栈及数据结构堆、栈不是一个概念。就是说,在系统中的堆、栈是真实的内存物理区,而数据结构中的堆、栈其实是一种抽象的数据存储结构。

栈:它是一种数据结构,它满足了后进先出的性质,是一种数据项按序排列的数据结构,它只能够在一端(称为栈顶(top))对数据项来进行插入和删除。

java栈和队列

栈区: stack中,编译器自动分配并释放它存放函数的参数值、局部变量的值等。

栈的优势:栈的存取速度较堆要快,仅次于直接位于CPU中的寄存器。但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。

示例:

public class Stack < E > extends Vector < E >
{ // 使用数组实现栈
    // 构造一个空栈
    public Stack()
    {}
    // 压入栈顶部
    public E push(E item)
    {
        addElement(item);
        return item;
    }
    // 移除栈顶的对象,并返回
    public synchronized E pop()
    {
        E obj;
        int len = size();
        obj = peek();
        removeElementAt(len - 1);
        return obj;
    }
    // 查看栈顶的对象,但不从栈中移除它
    public synchronized E peek()
    {
        int len = size();
        if (len == 0)
            throw new EmptyStackException();
        return elementAt(len - 1);
    }
    // 判断栈是否为空
    public boolean empty()
    {
        return size() == 0;
    }
    //返回对象在栈中的位置,以 1 为基数。
    public synchronized int search(Object o)
    {
        int i = lastIndexOf(o);
        if (i >= 0)
        {
            return size() - i;
        }
        return -1;
    }
}

二、队列概念与实现示例

队例也是一种数据结构,在计算机科学中,它跟栈比较类似。在对列中,第一个插入的数据项也是最先被移除的数据项,而在栈中,则是最后插入的数据项最先移除。队列就像我们买票排队一样,第一个进入的人是对头所以能够第一个买票,然最后一个就只能最后才能买到票了。

在计算机中,队列和栈一样也被用作于程序员的工具。它可以用于模拟真实世界的环境,如模拟人们在银行里排队等待,飞机等待起飞,或因特网络上数据包等待传送等。

示例:

//Java中LinkedList提供了方法以支持队列的行为,并且它实现了Queue接口,因此LinkedList可以用作Queue的一种实现  它是先进先出的
Queue < Integer > queue = new LinkedList < > (); //声明队列
queue.offer(1); //添加数据
queue.offer(2);
queue.offer(3);
//出队
while (queue.peek() != null) //判断队列是否为空
    System.out.println(queue.poll()); //输出队列中的元素

以上就是今天的全部内容了,如果小伙伴们还需要了解更多栈的常见问题,那就快来关注我们的网站了解详情吧。

推荐阅读:

java栈溢出是什么原因?java栈溢出模拟示例

java栈的特点是什么?java的堆和栈的优缺点介绍

简述如何用两个栈实现一个队列?