测试 Queue and Deque 示例

  1. 线性表:多个元素的有序集合

  2. 链表:非连续的、非顺序的

  3. Queue:理解成特殊的线性表,比方说 排队打饭,一端进、一端出,遵循先进先出原则;常用操作方法有: offer(入队)、poll(出队)、peek(返回队首元素),这里注意一下 poll 和 peek 区别: poll 删除队首元素并返回,peek返回队首元素但并不删除。

  4. Deque: double end queue 双端队列,也就是 2端都可以 入队和出队,遵循先进后出原则;常用操作方法有:push(入队)、pop(出队)、peek(返回队首元素),这里也需要注意一下 pop 和 peek 区别:pop 删除队首元素并返回,peek返回队首元素但并不删除。

  5. 具体示例代码如下:

package queue;

import java.util.Deque;
import java.util.LinkedList;
import java.util.Queue;

import org.junit.Test;

public class Queue1 {


    /**
     *  queue 遵循先进先出原则, 
     *  offer 入队, poll 出队,peek 返回队首元素,但并不删除
     *  note: poll and pop 删除队首元素并返回
     */
    @Test
    public void testQueue(){
        Queue<String> queue = new LinkedList<String>();
        queue.offer("a");
        queue.offer("b");
        queue.offer("c");

        System.out.println("list:" + queue);

        String poll = queue.poll();
        System.out.println("poll:" + poll);
        System.out.println("list:" + queue);

        String peek = queue.peek();
        System.out.println("peek:" + peek);

        while(queue.size() > 0){
            System.out.println("poll element:" + queue.poll());
        }
    }

    /**
     * Deque: double end queue, 遵循先进后出原则
     * push 入队, pop 出队, peek 返回队首元素,但并不删除
     * note:pop 删除队首元素并返回
     */
    @Test
    public void testDeque(){

        Deque<String> deque = new LinkedList<String>();
        deque.push("da");
        deque.push("db");
        deque.push("dc");
        System.out.println("deque:" + deque);

        String pop = deque.pop();
        System.out.println("pop:" + pop);

        String peek = deque.peek();
        System.out.println("peek:" + peek);

        while(deque.size() > 0){
            System.out.println("deque pop:" + deque.pop());
        }

    }

}
Java中的QueueDeque是两种不同的数据结构。 1. Queue(单向队列)是一种FIFO(先进先出)的数据结构,它继承自Collection接口。Queue有一个直接子类PriorityQueue,它是一个基于优先级的队列,元素按照优先级进行排序。Queue的常用方法包括add()、offer()、remove()、poll()、element()和peek()等。 2. Deque(双向队列)是一种支持在两端添加或移除元素的数据结构,它继承自Queue接口。Deque有两个直接子类:LinkedList和ArrayDeque。LinkedList是基于链表实现的双向队列,而ArrayDeque是基于数组实现的双向队列。Deque的常用方法包括addFirst()、addLast()、offerFirst()、offerLast()、removeFirst()、removeLast()、pollFirst()、pollLast()、getFirst()、getLast()、peekFirst()和peekLast()等。 以下是Java中使用QueueDeque示例代码: ```java import java.util.Queue; import java.util.LinkedList; import java.util.ArrayDeque; public class QueueDequeExample { public static void main(String[] args) { // 使用Queue Queue<String> queue = new LinkedList<>(); queue.add("apple"); queue.add("banana"); queue.add("orange"); System.out.println("Queue: " + queue); System.out.println("First element: " + queue.peek()); System.out.println("Removed element: " + queue.poll()); System.out.println("Queue after removal: " + queue); // 使用Deque Deque<Integer> deque = new ArrayDeque<>(); deque.addFirst(1); deque.addLast(2); deque.addLast(3); System.out.println("Deque: " + deque); System.out.println("First element: " + deque.getFirst()); System.out.println("Last element: " + deque.getLast()); System.out.println("Removed first element: " + deque.removeFirst()); System.out.println("Deque after removal: " + deque); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值