다음은 Apache Commons Collections 라이브러리 (Library) 내 CircularFifoQueue 예제이다.


public class CircularFifoQueueTest {


    @Test

    public void test() {

        CircularFifoQueue<Integer> circularFifoQueue = new CircularFifoQueue<Integer>(5);

        for (int i = 0; i < 10; i++) {

            circularFifoQueue.add(i);

            System.out.println(circularFifoQueue);


            System.out.println(circularFifoQueue.get(circularFifoQueue.size() - 1));

        }

    }


}


다음 디펜던시 (Dependency)를 추가한다.


compile 'org.apache.commons:commons-collections4:4.0'


다음은 Google Guava 라이브러리 내 EvictingQueue 예제이다.


public class EvictingQueueTest {


    @Test

    public void test() {

        EvictingQueue<Integer> evictingQueue = EvictingQueue.<Integer>create(5);

        for (int i = 0; i < 10; i++) {

            evictingQueue.add(i);

            System.out.println(evictingQueue);

        }

    }


}


다음 디펜던시를 추가한다.


compile 'com.google.guava:guava:17.0'


Queue이기 때문에 FIFO 구조로 쓰는 것이 맞겠으나,


특별히 랜덤 엑세스가 필요한 경우에는 Apache Commons Collections를 사용하면 되겠다.


Reference:

http://stackoverflow.com/questions/5498865/size-limited-queue-that-holds-last-n-elements-in-java/15156403#15156403

Posted by izeye

댓글을 달아 주세요