Java中栈的用法介绍(附代码)

互联网 19-3-29

本篇文章给大家带来的内容是关于Java中栈的用法介绍(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

Java中的Stack是早期的遗留类,Sun/Oracle已经不推荐使用,现在只是为了兼容遗留代码而保留.

遗留实现

如下面的代码所示,java.util.Stack中的实现是基于动态数组实现的,而Vector同样是一个被废弃的类。

个人看来,这个实现有两个问题

基于数组而非链表,栈很大时需要多次扩容,带来不必要的性能损失

public class Stack<E> extends Vector<E> {     /**      * Creates an empty Stack.      */     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;     }       public synchronized int search(Object o) {         int i = lastIndexOf(o);          if (i >= 0) {             return size() - i;         }         return -1;     }      /** use serialVersionUID from JDK 1.0.2 for interoperability */     private static final long serialVersionUID = 1224463164541339165L; }

自己简单的封装

下面是基于LinkedList封装的Stack

这里的栈是一个装饰器。

import java.util.LinkedList; import java.util.NoSuchElementException;  public class Stack<T> {     private LinkedList<T> stack;      Stack() {         stack = new LinkedList<>();     }      public void push(T o) {         stack.add(o);     }      public T pop() {         if (size() <= 0) {             throw new NoSuchElementException("Stack is Empty.");         }         return stack.removeLast();     }      public T peek() {         if (size() <= 0) {             throw new NoSuchElementException("Stack is Empty.");         }         return stack.getLast();     }      public boolean empty() {         return stack.size() == 0;     }      public int size() {         return stack.size();     } }

本篇文章到这里就已经全部结束了,更多其他精彩内容可以关注PHP中文网的Java视频教程栏目!

以上就是Java中栈的用法介绍(附代码)的详细内容,更多内容请关注技术你好其它相关文章!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
标签: stack
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:java打包war的方法介绍(附代码)

相关资讯