我要用java实现一个栈,基本操作就是出栈入栈。请问如何实现效率比较高。

import java.util.EmptyStackException;import java.util.Vector;public class UsingStack{ public static void main(String[] args){ //构造栈对象,使用类型限制,只能存储Integer数据 MyStack s = new MyStack();//1、2、3依次入栈 s.push(1);s.push(2);s.push(3);//3...
我要用java实现一个栈,基本操作就是出栈入栈。请问如何实现效率比较高。
//这是JDK提供的栈

import java.util.Stack;

public class UsingStack {
public static void main(String[] args) {
//构造栈对象,使用类型限制,只能存储Integer数据
Stack<Integer> s = new Stack<Integer>();

//1、2、3依次入栈
s.push(1);
s.push(2);
s.push(3);

//3、2、1依次出栈
System.out.println(s.pop());
System.out.println(s.pop());
System.out.println(s.pop());
}
}

//这是我写的顺序结构的栈
import java.util.EmptyStackException;
import java.util.Vector;

public class UsingStack{
public static void main(String[] args){
//构造栈对象,使用类型限制,只能存储Integer数据
MyStack<Integer> s = new MyStack<Integer>();

//1、2、3依次入栈
s.push(1);
s.push(2);
s.push(3);

//3、2、1依次出栈
System.out.println(s.pop());
System.out.println(s.pop());
System.out.println(s.pop());
}
}

/**
* 栈类
* @author developer_05
* @param <T>
*/
class MyStack<T> extends Vector<T>{
/**
* 构造方法
*/
public MyStack(){
}

/**
* 入栈方法
* @param item 待入栈的元素
* @return 返回入栈的元素
*/
public T push(T item) {
addElement(item);

return item;
}

/**
* 出栈方法(同步处理)
* @return 返回出栈元素
*/
public synchronized T pop() {
T obj;
int len = size();

if (len == 0)
throw new EmptyStackException();
obj = elementAt(len - 1);

removeElementAt(len - 1);

return obj;
}

/**
* 判断栈是否为空的方法
* @return 返回true(栈空)或false(栈非空)
*/
public boolean empty() {
return size() == 0;
}

private static final long serialVersionUID = 1L;
}2012-02-01
linkedlist基于双向链表实现,可以进行堆栈、队列的相关操作;stack基于数组实现,在堆栈基本操作上效率较linkedlist要高。
自己实现的话,使用数组来实现,其实和stack类似。2012-02-01
java里有Stack这个类
基本实现就是靠它了 你要知道自己写的一般没有官方的好
你可以查看它的源代码 然后自己在一些基础上改改2012-02-01
java的list的子类里面有个叫vector,这个下面有个叫做stack,可以实现!你去看 看看2012-02-01
mengvlog 阅读 51 次 更新于 2025-10-30 22:15:17 我来答关注问题0
檬味博客在线解答立即免费咨询

Java相关话题

Copyright © 2023 WWW.MENGVLOG.COM - 檬味博客
返回顶部