在java中,栈与队列都是学习java语言不能避免的,你知道它们都是什么概念吗?它们该如何在java中实现呢?快一起来看看吧。
一、栈概念与实现示例
在系统中,java的堆和栈及数据结构堆、栈不是一个概念。就是说,在系统中的堆、栈是真实的内存物理区,而数据结构中的堆、栈其实是一种抽象的数据存储结构。
栈:它是一种数据结构,它满足了后进先出的性质,是一种数据项按序排列的数据结构,它只能够在一端(称为栈顶(top))对数据项来进行插入和删除。
栈区: 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()); //输出队列中的元素
以上就是今天的全部内容了,如果小伙伴们还需要了解更多栈的常见问题,那就快来关注我们的网站了解详情吧。
推荐阅读: