Home > Java > javaTutorial > How Can I Efficiently Create a Size-Limited Queue in Java?

How Can I Efficiently Create a Size-Limited Queue in Java?

Barbara Streisand
Release: 2024-11-29 05:03:10
Original
776 people have browsed it

How Can I Efficiently Create a Size-Limited Queue in Java?

Size-Limited Queue for Storing Last N Elements in Java

This article aims to address a common problem in Java programming: managing queues with a fixed size that automatically discards older elements upon adding new ones. While the implementation provided manually in the question is certainly viable, this discussion explores an alternative solution from the Apache Commons Collections library.

Apache Commons Collections: CircularFifoQueue

Apache Commons Collections provides a class named CircularFifoQueue<> that meets the requirements of a size-limited queue. As per its documentation:

CircularFifoQueue is a first-in first-out queue with a fixed size that replaces its oldest element if full.

Usage:

Implementing a size-limited queue with CircularFifoQueue<> is straightforward:

import java.util.Queue;
import org.apache.commons.collections4.queue.CircularFifoQueue;

Queue<Integer> fifo = new CircularFifoQueue<>(2);
fifo.add(1);
fifo.add(2);
fifo.add(3);
System.out.println(fifo); // Output: [2, 3]
Copy after login

Results:

The sample code demonstrates that the CircularFifoQueue maintains a capacity of 2, discarding the oldest elements when new ones are added.

Additional Options:

If using an older version of Apache Commons Collections (3.x), you can opt for CircularFifoBuffer, which is functionally similar but lacks generics support.

Conclusion:

For situations where you need to manage queues with a limited size, Apache Commons Collections provides a convenient and efficient implementation with CircularFifoQueue<>. This eliminates the need for manual implementation and offers the added benefit of exception handling and thread safety.

The above is the detailed content of How Can I Efficiently Create a Size-Limited Queue in Java?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template