<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ### [優先級隊列PriorityQueue](https://lingcoder.gitee.io/onjava8/#/book/12-Collections?id=%e4%bc%98%e5%85%88%e7%ba%a7%e9%98%9f%e5%88%97priorityqueue) 先進先出(FIFO)描述了最典型的*隊列規則*(queuing discipline)。隊列規則是指在給定隊列中的一組元素的情況下,確定下一個彈出隊列的元素的規則。先進先出聲明的是下一個彈出的元素應該是等待時間最長的元素。 優先級隊列聲明下一個彈出的元素是最需要的元素(具有最高的優先級)。例如,在機場,當飛機臨近起飛時,這架飛機的乘客可以在辦理登機手續時排到隊頭。如果構建了一個消息傳遞系統,某些消息比其他消息更重要,應該盡快處理,而不管它們何時到達。在Java 5 中添加了**PriorityQueue**,以便自動實現這種行為。 當在**PriorityQueue**上調用`offer()`方法來插入一個對象時,該對象會在隊列中被排序。\[^5\]默認的排序使用隊列中對象的*自然順序*(natural order),但是可以通過提供自己的**Comparator**來修改這個順序。**PriorityQueue**確保在調用`peek()`,`poll()`或`remove()`方法時,獲得的元素將是隊列中優先級最高的元素。 讓**PriorityQueue**與**Integer**,**String**和**Character**這樣的內置類型一起工作易如反掌。在下面的示例中,第一組值與前一個示例中的隨機值相同,可以看到它們從**PriorityQueue**中彈出的順序與前一個示例不同: ~~~ // collections/PriorityQueueDemo.java import java.util.*; public class PriorityQueueDemo { public static void main(String[] args) { PriorityQueue<Integer> priorityQueue = new PriorityQueue<>(); Random rand = new Random(47); for(int i = 0; i < 10; i++) priorityQueue.offer(rand.nextInt(i + 10)); QueueDemo.printQ(priorityQueue); List<Integer> ints = Arrays.asList(25, 22, 20, 18, 14, 9, 3, 1, 1, 2, 3, 9, 14, 18, 21, 23, 25); priorityQueue = new PriorityQueue<>(ints); QueueDemo.printQ(priorityQueue); priorityQueue = new PriorityQueue<>( ints.size(), Collections.reverseOrder()); priorityQueue.addAll(ints); QueueDemo.printQ(priorityQueue); String fact = "EDUCATION SHOULD ESCHEW OBFUSCATION"; List<String> strings = Arrays.asList(fact.split("")); PriorityQueue<String> stringPQ = new PriorityQueue<>(strings); QueueDemo.printQ(stringPQ); stringPQ = new PriorityQueue<>( strings.size(), Collections.reverseOrder()); stringPQ.addAll(strings); QueueDemo.printQ(stringPQ); Set<Character> charSet = new HashSet<>(); for(char c : fact.toCharArray()) charSet.add(c); // Autoboxing PriorityQueue<Character> characterPQ = new PriorityQueue<>(charSet); QueueDemo.printQ(characterPQ); } } /* Output: 0 1 1 1 1 1 3 5 8 14 1 1 2 3 3 9 9 14 14 18 18 20 21 22 23 25 25 25 25 23 22 21 20 18 18 14 14 9 9 3 3 2 1 1 A A B C C C D D E E E F H H I I L N N O O O O S S S T T U U U W W U U U T T S S S O O O O N N L I I H H F E E E D D C C C B A A A B C D E F H I L N O S T U W */ ~~~ **PriorityQueue**是允許重復的,最小的值具有最高的優先級(如果是**String**,空格也可以算作值,并且比字母的優先級高)。為了展示如何通過提供自己的**Comparator**對象來改變順序,第三個對**PriorityQueue**構造器的調用,和第二個對**PriorityQueue**的調用使用了由`Collections.reverseOrder()`(Java 5 中新添加的)產生的反序的**Comparator**。 最后一部分添加了一個**HashSet**來消除重復的**Character**。 **Integer**,**String**和**Character**可以與**PriorityQueue**一起使用,因為這些類已經內置了自然排序。如果想在**PriorityQueue**中使用自己的類,則必須包含額外的功能以產生自然排序,或者必須提供自己的**Comparator**。在[附錄:集合主題](https://lingcoder.gitee.io/onjava8/#/)中有一個更復雜的示例來演示這種情況。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看