队列(Queue)是一种先进先出(FIFO)的数据结构,可以在一端插入元素,在另一端删除元素。在队列中,插入元素的一端称为队尾(rear),删除元素的一端称为队头(front)。
Java中的Queue接口是一个继承自Collection接口的子接口,它定义了一些方法来操作队列。常用的实现类有LinkedList和ArrayDeque。
以下是Queue接口中常用的方法:
- enqueue(E e):将元素e插入队列的队尾。
- dequeue():删除队列中的队头元素,并返回该元素。
- peek():获取队头元素,但不删除它。
- isEmpty():判断队列是否为空。
- size():获取队列中元素的个数。
LinkedList和ArrayDeque是Java中常用的队列实现类。它们都实现了Queue接口,因此可以直接使用Queue接口中定义的方法。
- LinkedList实现了双向链表,可以作为队列的实现。它的enqueue(E e)方法将元素插入链表的末尾,dequeue()方法删除链表的第一个元素,并返回该元素。
示例代码:
Queuequeue = new LinkedList<>(); queue.enqueue(1); // 队列中插入元素1 queue.enqueue(2); // 队列中插入元素2 System.out.println(queue.peek()); // 输出队头元素 int num = queue.dequeue(); // 删除队头元素,并返回该元素 System.out.println(num); // 输出删除的元素 System.out.println(queue.isEmpty()); // 判断队列是否为空 System.out.println(queue.size()); // 输出队列中元素的个数
- ArrayDeque是一个双端队列的实现类,也可以作为队列的实现。它的enqueue(E e)方法将元素插入双端队列的末尾,dequeue()方法删除双端队列的第一个元素,并返回该元素。
示例代码:
Queuequeue = new ArrayDeque<>(); queue.enqueue(1); // 队列中插入元素1 queue.enqueue(2); // 队列中插入元素2 System.out.println(queue.peek()); // 输出队头元素 int num = queue.dequeue(); // 删除队头元素,并返回该元素 System.out.println(num); // 输出删除的元素 System.out.println(queue.isEmpty()); // 判断队列是否为空 System.out.println(queue.size()); // 输出队列中元素的个数
队列的应用场景非常广泛,比如在实现消息队列、线程池等方面都可以使用队列数据结构。