SORU
31 Mart 2011, PERŞEMBE


Son N öğeleri barındıran boyutu-sınırlı Java sırası

Çok basit ve kısa bir soru üzerine Java kitaplıkları: var hazır sınıf uygulayan bir Queue ile bir sabit maksimum boyutu - yani her zaman verir ayrıca elemanları, ama sessizce başını Kaldır öğelerine uyum alanı için yeni eklenen unsurlar.

Elbette, önemsiz elle uygulamak için:

import java.util.LinkedList;

public class LimitedQueue<E> extends LinkedList<E> {
    private int limit;

    public LimitedQueue(int limit) {
        this.limit = limit;
    }

    @Override
    public boolean add(E o) {
        super.add(o);
        while (size() > limit) { super.remove(); }
        return true;
    }
}

Gördüğüm kadarıyla, Java stdlibs standart uygulama, ama Apache Commons, bir ya da böyle bir şey var olabilir?

CEVAP
12 NİSAN 2011, Salı


Apache commons koleksiyonları 4 aradığınızı olan CircularFifoQueue<> vardır. Bu javadoc alıntı:

CircularFifoQueue tam ise en eski unsuru yerine sabit bir boyutu ile ilk--ilk sıra.

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

    Queue<Integer> fifo = new CircularFifoQueue<Integer>(2);
    fifo.add(1);
    fifo.add(2);
    fifo.add(3);
    System.out.println(fifo);

    // Observe the result: 
    // [2, 3]

Eğer Apache commons koleksiyonları eski bir sürümünü kullanıyorsanız (3.x), temelde jenerik olmadan aynı şeydir CircularFifoBuffer kullanabilirsiniz.

Güncelleme: güncelleme jenerik destekleyen commons koleksiyonlar sürüm 4 aşağıdaki release cevap.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Liberator

    Liberator

    14 EYLÜL 2007
  • Ryan Billy

    Ryan Billy

    30 EKİM 2006
  • ŠĩŗĜŕôŵåɭȍҭҭ

    ŠĩŗĜŕô

    29 Kasım 2009