Rumah  >  Artikel  >  Java  >  Penjelasan terperinci tentang kaedah gilir Java Queue yang biasa digunakan dan langkah berjaga-jaga

Penjelasan terperinci tentang kaedah gilir Java Queue yang biasa digunakan dan langkah berjaga-jaga

WBOY
WBOYasal
2024-01-09 10:45:59774semak imbas

Java Queue队列的常用方法和注意事项

Kaedah dan langkah berjaga-jaga biasa untuk baris gilir Java Queue

Barisan (Barisan) ialah struktur data linear khas, dan operasinya adalah berdasarkan prinsip masuk dahulu, keluar dahulu (FIFO). Java menyediakan antara muka Queue untuk melaksanakan fungsi baris gilir Kelas pelaksanaan biasa termasuk LinkedList dan ArrayDeque.

1. Kaedah yang biasa digunakan

  1. add(): Tambahkan elemen pada penghujung baris gilir. Jika baris gilir penuh, menggunakan kaedah ini akan membuang IllegalStateException.

    Queue<Integer> queue = new LinkedList<>();
    queue.add(1);
    queue.add(2);
    queue.add(3);
  2. offer(): Tambahkan elemen pada penghujung baris gilir. Jika baris gilir penuh, menggunakan kaedah ini akan mengembalikan palsu, menunjukkan bahawa penambahan gagal.

    Queue<Integer> queue = new LinkedList<>();
    queue.offer(1);
    queue.offer(2);
    queue.offer(3);
  3. remove(): Alih keluar dan kembalikan elemen kepala baris gilir. Jika baris gilir kosong, menggunakan kaedah ini akan membuang pengecualian NoSuchElementException.

    Queue<Integer> queue = new LinkedList<>();
    queue.add(1);
    queue.add(2);
    queue.add(3);
    int head = queue.remove();
  4. poll(): Alih keluar dan kembalikan elemen kepala baris gilir. Jika baris gilir kosong, menggunakan kaedah ini akan mengembalikan null.

    Queue<Integer> queue = new LinkedList<>();
    queue.offer(1);
    queue.offer(2);
    queue.offer(3);
    int head = queue.poll();
  5. element(): Mengembalikan elemen kepala baris gilir, tetapi tidak memadamkannya. Jika baris gilir kosong, menggunakan kaedah ini akan membuang pengecualian NoSuchElementException.

    Queue<Integer> queue = new LinkedList<>();
    queue.add(1);
    queue.add(2);
    queue.add(3);
    int head = queue.element();
  6. peek(): Mengembalikan elemen kepala baris gilir, tetapi tidak memadamkannya. Jika baris gilir kosong, menggunakan kaedah ini akan mengembalikan null.

    Queue<Integer> queue = new LinkedList<>();
    queue.offer(1);
    queue.offer(2);
    queue.offer(3);
    int head = queue.peek();

2. Nota

  1. Kelas pelaksanaan baris gilir biasanya tidak selamat jika digunakan dalam persekitaran berbilang benang, pemprosesan penyegerakan tambahan diperlukan.

    Queue<Integer> queue = new LinkedList<>();
    queue = Collections.synchronizedQueue(queue);
  2. Pertimbangkan saiz baris gilir Jika kapasiti terhad, pertimbangan kapasiti dan pemprosesan perlu dilakukan sebelum menambah elemen.

    Queue<Integer> queue = new ArrayDeque<>(10);
  3. Elakkan menggunakan Iterator untuk operasi traversal dan pemadaman Sebaliknya, gunakan kaedah yang disediakan oleh baris gilir.
  4. Apabila anda perlu menggunakan baris gilir keutamaan, anda boleh menggunakan kelas PriorityQueue untuk melaksanakannya.
  5. Baris gilir sangat berguna dalam menyelesaikan masalah masuk dahulu, seperti penjadualan tugas, carian luas-dahulu dan senario lain.

Ringkasan:
Baris gilir Java menyediakan satu siri kaedah untuk melaksanakan operasi masuk dahulu, keluar dahulu termasuk add(), offer(), remove(), poll(), element() dan peek(. ). Apabila menggunakan baris gilir, anda perlu memberi perhatian kepada keselamatan benang, isu kapasiti dan operasi pemadaman traversal. Baris gilir sangat mudah dan praktikal apabila menyelesaikan masalah masuk dahulu keluar, dan sesuai untuk senario seperti penjadualan tugas dan carian luas dahulu.

Atas ialah kandungan terperinci Penjelasan terperinci tentang kaedah gilir Java Queue yang biasa digunakan dan langkah berjaga-jaga. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn