// 添加操作:
private void push(E e) {
// 兩個隊列為空時龟梦,優(yōu)先考慮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;
}