隊列是一種常見的數據結構,它遵循先進先出(FIFO)的原則,即先放入隊列的元素先被取出。Java中提供了許多實現隊列的類,包括ArrayDeque、PriorityQueue、LinkedList等等。其中ArrayDeque是一個基于數組實現的雙端隊列,PriorityQueue則是根據元素的Comparator規則進行排序的隊列,LinkedList是一個雙向鏈表實現的隊列。
在隊列的基礎上,Java還提供了阻塞隊列和丟棄隊列的實現。阻塞隊列是一種特殊的隊列,它具有阻塞的特性,即當隊列已滿或已空時,放入元素或取出元素的操作將會被阻塞。Java中的阻塞隊列包括ArrayBlockingQueue、LinkedBlockingQueue、SynchronousQueue等等。其中ArrayBlockingQueue和LinkedBlockingQueue基于數組和鏈表實現,SynchronousQueue則是一種沒有容量的隊列,每次放入元素都需要等待取出元素。
丟棄隊列則是指當隊列已滿時,新加入的元素將會被丟棄。在Java中,可以通過設置阻塞隊列的容量和拒絕策略來達到丟棄隊列的目的。例如,可以使用LinkedBlockingQueue并設置容量為1,再使用DiscardPolicy拒絕策略來實現丟棄隊列:
LinkedBlockingQueue<Integer> queue = new LinkedBlockingQueue<>(1); queue.put(1); // 此時隊列已滿 queue.offer(2); // 使用offer方法放入元素,將返回false queue.offer(2, new ThreadPoolExecutor.DiscardPolicy()); // 使用自定義的拒絕策略丟棄新加入的元素
上一篇php i減
下一篇php html n