Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

limited size Collection in java

Which collection type in java should I use if I want to have something like Size-limited queue that holds last N elements in Java.

I have a list and I want to limit the size of the list to "100". So if i add the 101 th element in the list, the first element should be deleted automatically (FIFO). For example:

List<Item> items = ??;
items.add(item_1);
...
items.add(item_101); // implicitly calls items.remove(0);
items.add(item_102); // implicitly calls items.remove(0);
like image 341
nimo23 Avatar asked Jul 07 '26 05:07

nimo23


1 Answers

You could try to write your own in 5 minutes actually, here is very dirty sketch I put up:

static class LFUList<T> extends AbstractCollection<T> {

    private final int size;

    private ArrayDeque<T> deque;

    public LFUList(int size) {
        super();
        this.size = size;
        deque = new ArrayDeque<>(size);
    }

    @Override
    public Iterator<T> iterator() {
        return deque.iterator();
    }

    @Override
    public int size() {
        return deque.size();
    }

    @Override
    public boolean add(T e) {
        if (deque.size() == size) {
            deque.pollFirst();
        }
        return deque.add(e);
    }

    @Override
    public boolean remove(Object o) {
        return deque.remove(o);
    }

}
like image 138
Eugene Avatar answered Jul 09 '26 18:07

Eugene



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!