java集合框架之堆栈
2015-10-04 13:56
597 查看
堆栈是一种“后进先出”的数据结构,只在一端进行输入或输出。
java.util包中的Stack<E>泛型类创建一个堆栈对象,调用public E push(E item)实现压栈操作,调用public E pop()实现出栈操作。
其他方法:public e peek()获取栈顶数据,但不删除该数据; public int Search(Object data)获取数据在堆栈中的位置,最顶端的位置时1,向下依次增加,如果不含此数据,返回-1;public boolean Empty(),判断是否有数据。
使用堆栈可以节省内存的开销。的比如递归是一种很消耗内存的算法,可以借助堆栈消除大部分递归。
下面以斐波那契数列计算为例,对比计算第40个斐波那契数列数字所花费的时间。
java.util包中的Stack<E>泛型类创建一个堆栈对象,调用public E push(E item)实现压栈操作,调用public E pop()实现出栈操作。
其他方法:public e peek()获取栈顶数据,但不删除该数据; public int Search(Object data)获取数据在堆栈中的位置,最顶端的位置时1,向下依次增加,如果不含此数据,返回-1;public boolean Empty(),判断是否有数据。
使用堆栈可以节省内存的开销。的比如递归是一种很消耗内存的算法,可以借助堆栈消除大部分递归。
下面以斐波那契数列计算为例,对比计算第40个斐波那契数列数字所花费的时间。
package 斐波那契数列_堆栈法与递归法比较; import java.util.*; public class Main { static int recursion(int n){ if(n==1) return 1; if(n==2) return 1; else return recursion(n-1)+recursion(n-2); } static int stack(int n){ Stack<Integer> stack=new Stack<Integer>(); stack.push(new Integer(1)); stack.push(new Integer(1)); int k=3; while(k<=n){ Integer F1=stack.pop(); int f1=F1.intValue(); Integer F2=stack.pop(); int f2=F2.intValue(); Integer t=new Integer(f1+f2); stack.push(t); stack.push(F2); k++; } stack.pop(); return stack.pop(); } public static void main(String[] args) { Scanner in=new Scanner(System.in); int n=in.nextInt(); in.close(); long time; long st; long et; long value; st=System.currentTimeMillis(); value=recursion(n); et=System.currentTimeMillis(); System.out.println("斐波那契数列递归法"+value+" 耗时"+(et-st)); st=System.currentTimeMillis(); value=stack(n); et=System.currentTimeMillis(); System.out.println("斐波那契数列堆栈法"+value+" 耗时"+(et-st)); } } //40 //斐波那契数列递归法102334155 耗时369 //斐波那契数列堆栈法102334155 耗时0
相关文章推荐
- java SE复习笔记51
- [置顶] Java中的线程
- java线程池的解析
- spring-mybatis整合
- JdbcTemplate查询(Spring框架中的工具类)
- java17:修饰词
- 测试天气查询API(JAVA版百度api、C#版APIX)未处理json
- Java集合框架
- 开源 java CMS - FreeCMS2.3员
- Java多线程8:wait()和notify()/notifyAll()
- Java中的异常
- JAVA同步回调函数
- Java ArryList
- C#和JAVA GET,SET对比
- java自动装箱与拆箱
- [置顶] Java内存分析 --- 虚拟机运行时数据区
- 自定义spring日志拦截
- JAVA IO处理流
- MyEclipse 2014 破解图文详细教程
- Java中有关Null的9件事