队列Queue和栈

1、队列Queue是常用的数据结构,可以将队列看成特殊的线性表,队列限制了对线性表的访问方式,只能从线性表的一段添加(offer)元素,

      从另一段取出(poll)元素,队列遵循先进先出的原则。

2、JDK中提供了Queue接口,同时使得LinkList实现了该接口,选择LinkList实现Queue的原因是Queue经常要进行添加和删除的操作 ,而LinkList在这方面效率较高。

3、Queue接口的主要方法:

      1)boolean offer(E  e) 将一个对象添加至队尾,如果添加成功则返回true。

      2)E  poll  从对首返回一个元素,并删除此元素。

      3)E  peek  返回一个元素(但并不删除此元素)

                          public void testQueue() {

                          Queue<String> queue = new LinkedList<String>();

                           queue.offer("a");

                            queue.offer("b");

                            queue.offer("c");

                           System.out.println(queue); // [a, b, c]

                           String str = queue.peek();

                            System.out.println(str); // a

                            while (queue.size() > 0) {

                             str = queue.poll();

                            System.out.print(str + " "); // a b c}}

4、Deque是Queue的子接口,定义了所谓的双端队列,即从队列的两端分别可以入队(offer)和出队(poll),LinkList实现了该接口,

     如果将Deque限制为只能从一端入队和出队,则可实现 栈(Stack)的数据结构,对于栈而言,入栈称之为push,出栈称之为pop,栈遵循先进后出的原则。

     使用Deque提供的peek方法,可以查看栈顶元素,并查看栈顶元素。

                      public void testStack() {

                      Deque<String> stack = new LinkedList<String>();

                      stack.push("a");

                      stack.push("b");

                      stack.push("c");

                      System.out.println(stack); // [c, b, a]

                      String str = stack.peek();

                       System.out.println(str); // c

                      //循环删除栈顶元素

                       while (stack.size() > 0) {

                        str = stack.pop();

                        System.out.print(str + " "); // c b a}

}

posted @ 2017-08-31 20:47  奋斗的大海  阅读(206)  评论(0编辑  收藏  举报