首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

使用LinkedList实现Stack跟Queue

2014-01-21 
使用LinkedList实现Stack和Queue虽然在java.util包中有Stack,但是不赞成使用。建议使用如下的Stack ?!!!??

使用LinkedList实现Stack和Queue

虽然在java.util包中有Stack,但是不赞成使用。建议使用如下的Stack ?!!!

?

?

先看看是如何实现的:

package com.wjy.linkedlist.stack;import java.util.LinkedList;public class Stack<T> {private LinkedList<T> storage=new LinkedList<T>();public void push(T t){storage.addFirst(t);}public T peek(){return storage.getFirst();}public T pop(){return storage.removeFirst();}public boolean isEmpty(){return storage.isEmpty();}public String toString(){return storage.toString();}}

?看看测试代码:

package com.wjy.linkedlist.stack;public class MainTest {public static void main(String args[]){Stack<String> myStack=new Stack<String>();for(String item : "hello my baby".split(" ")){myStack.push(item);}while(!myStack.isEmpty()){System.out.println(myStack.pop());}}}/*outputbabymyhello///

?

//********************************************************************************************************************************

先看看最普遍的Queue,是java.util包中的。需要LinkedList来实例化它:

package com.wjy.linkedlist.queue;import java.util.LinkedList;import java.util.Queue;public class QueueTest {public static void main(String args[]){Queue<String> myQueue=new LinkedList<String>();for(String item : "hello my baby".split(" ")){myQueue.offer(item);}while(!myQueue.isEmpty()){System.out.println(myQueue.poll());}}}

?运行结果:

hellomybaby

?

以上是普通的队列。

?

注意注意:想想这样一种情况,在飞机场,当飞机临近起飞时,这架飞机的乘客可以插队先行登机。所以PriorityQueue就是为了这种情形设计的。

但是注意:Integer,String和Character可以和PriorityQueue一起使用的原因是:这些类已经内建了自然排序。如果你想在PriorityQueue中使用自己的类,就必须包括额外的功能以产生自然排序,或者必须提供自己的Comparator。

?

看看PriorityQueue的使用:

package com.wjy.priorityQueue;import java.util.PriorityQueue;public class PriorityQueueTest {public static void main(String args[]){PriorityQueue<String> myQueue=new PriorityQueue<String>();for(String item : "hello my baby".split(" ")){myQueue.offer(item);}while(!myQueue.isEmpty()){System.out.println(myQueue.poll());}}}/*Output:babyhellomy///

?

?

热点排行