我有一个流时间序列,我有兴趣保留最后4个元素,这意味着我希望能够弹出第一个元素并将其添加到末尾。本质上我需要一个环形缓冲区。
哪个Java集合最适合此用途?向量?
考虑CircularFifoBuffer Apache的Common.Collections。与Queue不同,你不必维护基础集合的有限大小,只要达到极限就可以包装它。
Buffer buf = new CircularFifoBuffer(4); buf.add("A"); buf.add("B"); buf.add("C"); buf.add("D"); //ABCD buf.add("E"); //BCDE
由于以下属性,CircularFifoBuffer会为你完成此操作:
注意:使用当前的通用集合(4. *)时,必须使用队列。像这样:
*
Queue buf = new CircularFifoQueue(4);