Java Queue的使用


Queue 實現一個先進先出的隊列

  • 獲取隊列長度:size()
  • 添加元素到隊尾:boolean add(E e) /boolean offer(E e)
  • 獲取隊列頭部元素並刪除:E remove() / E poll()
  • 獲取隊列頭部元素但不刪除:E element() / E peek()

當添加或獲取元素失敗時

throw Exception 返回false或null
添加元素到隊尾 add(E e) boolean offer(E e)
取隊首元素並刪除 E remove() E poll()
取隊首元素但不刪除 E element() E peek()

注意

避免把null添加咋隊列

PriorityQueue 的出隊順序與元素的優先級有關

  • remove() / poll() 總是取優先級最高的元素

PriorityQueue具有Queue接口,所以我們可以直接用Queue的方法來操作PriorityQueue

  • 獲取隊首元素時總是返回優先級最高的元素

E remove() /E poll() / E element() /E peek()

import java.util.PriorityQueue;

public class QueueTest {

    public static void main(String[] args) {
        PriorityQueue<Person> queue = new PriorityQueue<>((o1, o2) -> -o1.getName().compareTo(o2.getName()));

        queue.offer(new Person("劉德華", 18));
        queue.offer(new Person("張學友", 17));
        queue.offer(new Person("黎明", 38));

        while (queue.size()>0){
            System.out.println(queue.poll().toString());
        }
    }
}

class Person {
    private String name;
    private Integer age;

    public Person(String name, Integer age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

運行結果

Person{name='黎明', age=38}
Person{name='張學友', age=17}
Person{name='劉德華', age=18}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM