首页 / JAVA / 浅谈Java:Stack浅析
浅谈Java:Stack浅析
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了浅谈Java:Stack浅析,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1392字,纯文字阅读大概需要2分钟。
内容图文
![浅谈Java:Stack浅析](/upload/InfoBanner/zyjiaocheng/597/8e0584a813e54032b1681c8089e0a085.jpg)
浅谈Java:Stack浅析
Stack特性
? 1、满足元素"后经先出"(LIFO)的特性。
? 2、Stack类是线程安全的
? 3、Stack类在Vector类上实现了LIFO特性
java.util.Stack方法
jdk1.8源码
public class Stack<E> extends Vector<E> {
public Stack(){}
// 调用父类的addElement()实现
public E push(E item){
addElement(item);
return item;
}
// 返回最后一个元素即栈顶元素,并删除
public synchronized E pop() {
E obj;
int len = size();
// 获取最后一个元素,如果为空则抛出EmptyStackException
obj = peek();
// 调用父类的removeElementAt()方法删除最后一个元素
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;
}
}
Stack类的实现方法是比较简单的,仅在Voctor类的基础上提供了对于LIFO特性的实现细节。
自定义一个Stack类
LinkedList具有能够直接实现栈的所有功能的方法,下面我们采用LinkedList实现一个自定义栈
public class Stack<T> {
private LinkedList<T> storage = new LinkedList<T>();
public synchronized void push(T v) {
stroage.addFirsh(v);
}
public synchronized T pop() {
return stroage.removeFirst();
}
public synchronized T peek() {
return storage.getFirst();
}
public boolean empty(){
return storage.isEmpty();
}
public String toString() {
return storage.toString();
}
}
内容总结
以上是互联网集市为您收集整理的浅谈Java:Stack浅析全部内容,希望文章能够帮你解决浅谈Java:Stack浅析所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。