色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

java deque 和 queue

洪振霞1年前8瀏覽0評論

Java中的隊列和雙端隊列是兩種不同類型的數據結構。隊列(Queue)是一種先進先出(FIFO)的數據結構,雙端隊列(Deque)則可以在隊列兩端進行插入和刪除操作。

// Queue
Queue<String> q = new LinkedList<>();
q.add("a");
q.add("b");
q.add("c");
System.out.println(q.poll());  // 輸出a
System.out.println(q.poll());  // 輸出b
// Deque
Deque<String> d = new LinkedList<>();
d.addFirst("a");
d.addLast("b");
d.addFirst("c");
System.out.println(d.pollFirst());  // 輸出c
System.out.println(d.pollLast());  // 輸出b

在使用時,隊列通常用于實現先進先出的邏輯,例如消息隊列和緩存隊列。雙端隊列則可以用于實現雙向鏈表等數據結構。

除了Java自帶的隊列和雙端隊列,還可以使用Java的并發包中的隊列和雙端隊列。這些數據結構可以在多線程環境下安全地進行操作。

// 并發Queue
BlockingQueue<String> bq = new LinkedBlockingQueue<>();
bq.put("a");
bq.put("b");
bq.put("c");
System.out.println(bq.take());  // 輸出a
System.out.println(bq.take());  // 輸出b
// 并發Deque
BlockingDeque<String> bd = new LinkedBlockingDeque<>();
bd.putFirst("a");
bd.putLast("b");
bd.putFirst("c");
System.out.println(bd.takeFirst());  // 輸出c
System.out.println(bd.takeLast());  // 輸出b

在使用并發隊列和雙端隊列時,需要注意線程安全問題,避免出現數據競爭和死鎖等問題。