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

  • iNCH

    iNCH

    20 Temmuz 2009
  • REK Roth Productions

    REK Roth Pro

    8 Ocak 2011
  • StalkerJS

    StalkerJS

    15 HAZİRAN 2010