3 回答
慕桂英3389331
TA贡献2036条经验 获得超8个赞
自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]
动漫人物
TA贡献1815条经验 获得超10个赞
从Java 1.6开始,ArrayDeque实现Queue并且似乎比a更快,更高效LinkedList,并且没有以下的线程同步开销ArrayBlockingQueue:来自API文档:“当使用此类时,此类可能比Stack更快一个堆栈,当用作队列时比LinkedList更快。“
final Queue<Object> q = new ArrayDeque<Object>();
q.add(new Object()); //insert element
q.poll(); //remove element
添加回答
举报
0/150
提交
取消