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]
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!