Rumah > Java > javaTutorial > teks badan

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

WBOY
Lepaskan: 2024-01-09 10:45:59
asal
812 orang telah melayarinya

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);
    Salin selepas log masuk
  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);
    Salin selepas log masuk
  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();
    Salin selepas log masuk
  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();
    Salin selepas log masuk
  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();
    Salin selepas log masuk
  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();
    Salin selepas log masuk

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);
    Salin selepas log masuk
  2. Pertimbangkan saiz baris gilir Jika kapasiti terhad, pertimbangan kapasiti dan pemprosesan perlu dilakukan sebelum menambah elemen.

    Queue<Integer> queue = new ArrayDeque<>(10);
    Salin selepas log masuk
  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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!