簡(jiǎn)介
隊(duì)列是一種特殊的線性表,它只允許在表的前端進(jìn)行刪除操作,而在表的后端進(jìn)行插入操作腮介。
LinkedList類實(shí)現(xiàn)了Queue接口,因此我們可以把LinkedList當(dāng)成Queue來(lái)用端衰。
簡(jiǎn)單使用
import java.util.LinkedList;
import java.util.Queue;
public class Main {
public static void main(String[] args) {
//add()和remove()方法在失敗的時(shí)候會(huì)拋出異常(不推薦)
Queue<String> queue = new LinkedList<String>();
//添加元素
queue.offer("a");
queue.offer("b");
queue.offer("c");
queue.offer("d");
queue.offer("e");
for(String q : queue){
System.out.println(q);
}
System.out.println("===");
System.out.println("poll="+queue.poll()); //返回第一個(gè)元素叠洗,并在隊(duì)列中刪除
for(String q : queue){
System.out.println(q);
}
System.out.println("===");
System.out.println("element="+queue.element()); //返回第一個(gè)元素
for(String q : queue){
System.out.println(q);
}
System.out.println("===");
System.out.println("peek="+queue.peek()); //返回第一個(gè)元素
for(String q : queue){
System.out.println(q);
}
}
}
運(yùn)行輸出結(jié)果為:
a
b
c
d
e
===
poll=a
b
c
d
e
===
element=b
b
c
d
e
===
peek=b
b
c
d
e
說(shuō)明
(1)offer,add 區(qū)別:
一些隊(duì)列有大小限制旅东,因此如果想在一個(gè)滿的隊(duì)列中加入一個(gè)新項(xiàng)灭抑,多出的項(xiàng)就會(huì)被拒絕。
這時(shí)新的 offer 方法就可以起作用了抵代。它不是對(duì)調(diào)用 add() 方法拋出一個(gè) unchecked 異常腾节,而只是得到由 offer() 返回的 false。
(2)poll,remove 區(qū)別:
remove() 和 poll() 方法都是從隊(duì)列中刪除第一個(gè)元素案腺。remove() 的行為與 Collection 接口的版本相似庆冕, 但是新的 poll() 方法在用空集合調(diào)用時(shí)不是拋出異常,只是返回 null劈榨。因此新的方法更適合容易出現(xiàn)異常條件的情況访递。
(3)peek,element區(qū)別:
element() 和 peek() 用于在隊(duì)列的頭部查詢?cè)赝薄Ec remove() 方法類似拷姿,在隊(duì)列為空時(shí), element() 拋出一個(gè)異常旱函,而 peek() 返回 null响巢。
隊(duì)列詳細(xì)一些的博文:
java隊(duì)列——queue詳細(xì)分析
棧和隊(duì)列的面試題Java