Java环形缓冲区

我有一个流时间序列,我有兴趣保留最后4个元素,这意味着我希望能够弹出第一个,然后添加到最后。基本上我需要的是一个环形缓冲区。


哪个Java Collection最适合这个?向量?


隔江千里
浏览 709回答 3
3回答

慕桂英3389331

自Guava 15.0(2013年9月发布)以来,有EvictingQueue:一种非阻塞队列,在尝试将新元素添加到队列中并且已满时,会自动从队列头部驱逐元素。必须使用最大大小配置驱逐队列。每次将元素添加到完整队列时,队列都会自动删除其head元素。这与传统的有界队列不同,传统的有界队列在满时阻止或拒绝新元素。此类不是线程安全的,并且不接受null元素。使用示例:EvictingQueue<String> queue = EvictingQueue.create(2);queue.add("a");queue.add("b");queue.add("c");queue.add("d");System.out.print(queue); //outputs [c, d]

动漫人物

从Java 1.6开始,ArrayDeque实现Queue并且似乎比a更快,更高效LinkedList,并且没有以下的线程同步开销ArrayBlockingQueue:来自API文档:“当使用此类时,此类可能比Stack更快一个堆栈,当用作队列时比LinkedList更快。“final Queue<Object> q = new ArrayDeque<Object>();q.add(new Object()); //insert elementq.poll(); //remove element
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java