// 添加操作:
private void push(E e) {
// 两个队列为空时,优先考虑queue1
if (queue1.isEmpty() && queue2.isEmpty()) {
queue1.offer(e);
} else if (queue1.isEmpty()) {// 如果queue1为空,queue2有数据,直接放入queue2
queue2.offer(e);
} else if (queue2.isEmpty()) {//如果queue2为空,queue1有数据,直接放入queue1
queue1.offer(e);
}
}
// 删除操作
private E pop() {
// 两个队列为空时,直接抛出异常
if (queue1.isEmpty() && queue2.isEmpty()) {
return null;
}
// 如果queue1为空,将queue2中的元素依次加入到 queue1,留下最后一个元素 弹出
if (queue1.isEmpty()) {
while (queue2.size() > 1) {
/**
* Queue 中 remove() 和 poll()都是用来从队列头部删除一个元素。
* 在队列元素为空的情况下,remove() 方法会抛出NoSuchElementException异常,poll() 方法只会返回 null 。
*/
queue1.offer(queue2.poll());
}
return queue2.poll();
}
// 如果queue2为空,将queue1中的元素依次加入到 queue2, 留下最后一个元素 弹出
if (queue2.isEmpty()) {
while (queue1.size() > 1) {
queue2.offer(queue1.poll());
}
return queue1.poll();
}
return null;
}