Queue的遍历
不取出的遍历
public static void main(String[] args) {
Queue<Integer> queue = new ArrayBlockingQueue<>(5);
queue.add(1);
queue.add(2);
queue.add(3);
queue.add(4);
queue.add(5);
System.out.println("遍历前:" + queue);
//遍历队列
for (Integer item : queue) {
System.out.println("队列元素:" + item);
}
System.out.println("遍历后:" + queue);
}
结果:
取出数据的遍历
public static void test2() {
Queue<Integer> queue = new ArrayBlockingQueue<>(5);
queue.add(1);
queue.add(2);
queue.add(3);
queue.add(4);
queue.add(5);
System.out.println("遍历前:" + queue);
//遍历队列
int size = queue.size();
for (int i = 0; i < size; i++) {
System.out.println("队列元素:" + queue.poll());
}
System.out.println("遍历后:" + queue);
}
结果:
EvictingQueue
evict:驱逐、放逐
这个队列队尾添加元素会自动顶出队首添加的元素。
public static void test3() {
Queue<Integer> queue1 = EvictingQueue.create(5);
Queue<Integer> queue2 = new ArrayBlockingQueue<>(5);
queue1.add(1);
queue1.add(2);
queue1.add(3);
queue1.add(4);
queue1.add(5);
queue1.add(6);
System.out.println(queue1);
queue2.add(1);
queue2.add(2);
queue2.add(3);
queue2.add(4);
queue2.add(5);
queue2.add(6);
System.out.println(queue2);
}
结果:当插入元素数量大于队列大小,EvictingQueue会自动推进元素,而普通队列则报错。