java Deque与Queue

  • Post author:
  • Post category:java




java Deque与Queue



1、二者的关系


  • Deque继承Queue
public interface Deque<E> extends Queue<E> 



2、Queue接口


  • 是集合框架Collection的子接口,是一种常见的数据结构,遵循先进先出的原则。基于链表来进行实现,的单向队列。LinkedList接口,实现了Queue,所以LinkedList,在插入和删除操作,效率会比较高。
poll():将队首的元素删除,并返回该元素。
peek():返回队首的元素,但不进行删除操作。
offer():将元素添加到队尾,如果成功,则返回true


Queue的具体代码操作
        Queue<String> queue=new LinkedList<>();
        //追加元素
        queue.offer("one");
        queue.offer("two");
        queue.offer("three");
        queue.offer("four");
        System.out.println(queue);
        //从队首取出元素并删除
        String poll = queue.poll();
        System.out.println(poll);
        System.out.println(queue);

        //从队首取出元素但是不删除
        String peek = queue.peek();
        System.out.println(peek);
        System.out.println(queue);

        //遍历队列,这里要注意,每次取完元素后都会删除,整个
        //队列会变短,所以只需要判断队列的大小即可
        while(queue.size() > 0) {
            System.out.println(queue.poll());
        }

        
        //控制台输出
//        [one, two, three, four]
//        one
//                [two, three, four]
//        two
//                [two, three, four]
//        two
//                three
//        four



3、Deque接口(双向队列)


  • Deque接口,是Queue接口的子接口,是指队列两端的元素,既能入队(offer)也能出队。

    如果将Deque限制为只能从一端进行入队,和出队,就是栈的数据结构的实现。对于栈而言,有入栈(push)和出栈(pop),遵循先进后出的规则。
add((e)\offer(e):将元素增加到队列的末尾,如果成功,返回true。
remove()\poll():将元素从队列的队首删除。
element()\peek():返回队首的元素,但不进行删除。
栈:
push(e):入栈,添加到队首
pop(e):出栈,删除队首元素
peek():返回栈首元素,但不进行删除
Deque<String> deque = new LinkedList<String>();
        deque.push("a");
        deque.push("b");
        deque.push("c");
        System.out.println("push"+deque);//push 队首添加

        //获取栈首元素后,元素不会出栈
        String str = deque.peek();//peek 获取队首元素,不删除
        System.out.println(str);
        System.out.println("peek"+deque);

        String pops=deque.pop();//pop获取队首元素并删除
        System.out.println(pops);
        System.out.println("pop"+deque);
        String ele=deque.element();//element获取队首元素,不删除
        System.out.println(ele);
        System.out.println("element"+deque);

        String remove=deque.remove();//remove获取队首元素并删除
        System.out.println(remove);
        System.out.println("remove"+deque);

        boolean result =deque.add("uu");//add队尾添加
        System.out.println(result);
        System.out.println("add"+deque);
        boolean results =deque.offer("cuu");//offer队尾添加
        System.out.println(results);
        System.out.println("offer"+deque);
        //控制台输出
//        push[c, b, a]
//        c
//        peek[c, b, a]
//        c
//        pop[b, a]
//        b
//        element[b, a]
//        b
//        remove[a]
//        true
//        add[a, uu]
//        true
//        offer[a, uu, cuu]



版权声明:本文为m0_37664223原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。