java 模拟窗口排队

来源:互联网 发布:单类信息发布源码 编辑:程序博客网 时间:2024/06/08 15:10
public class MyQueue<T> {private LinkedList<T> q = new LinkedList<T>();  /** * 排队 * @param e */    public synchronized void put(T e) {//需要加上同步          q.addFirst(e);      }      /**     * 插队     * @param index     * @param e     */    public synchronized void jumpPut(int index, T e){    q.add(index, e);    }    /**     * 放弃排队     * @param index     */    public void giveUp(int index){    q.remove(index);    }    /**     * 排到窗口的人     * @return     */    public T get(){    try {Thread.sleep(500);} catch (InterruptedException e) {e.printStackTrace();}    return q.removeLast();    }    /**     * 是否还有人     * @return     */    public Boolean isEmpty(){    return q.isEmpty();    }        @Override      public String toString() {          return q.toString();      }  }

public class MyQueueTest {public static void main(String[] args) {MyQueue<String> mq = new MyQueue<String>();for(int i=0; i < 10; i++){//排队mq.put(i+"号");}//250号插队,插在6号后面mq.jumpPut(3, "250号");//7号放弃排队mq.giveUp(2);System.out.println("上班");while(!mq.isEmpty()){System.out.println("排队的人:"+mq.get());}System.out.println("下班");}}

执行上面代码输出结果为:

上班
排队的人:0号
排队的人:1号
排队的人:2号
排队的人:3号
排队的人:4号
排队的人:5号
排队的人:6号
排队的人:250号
排队的人:8号
排队的人:9号
下班

首先说下Java中的LinkedList,参考地址:http://blog.csdn.net/jzhf2012/article/details/8540543,在熟悉了LinkedList之后,在看上面的例子就更加容易理解了。

原创粉丝点击