Rumah > Java > javaTutorial > teks badan

Beratur di Jawa

WBOY
Lepaskan: 2024-08-30 16:03:40
asal
1026 orang telah melayarinya

Struktur data baris gilir menggunakan prinsip First In First Out (FIFO). Ia digunakan untuk memegang objek yang akan diproses mengikut urutan kedatangan mereka; ini hampir sama dengan barisan orang yang berdiri dalam barisan. Memandangkan Java menyediakan sokongan besar untuk struktur data dalam bentuk antara muka Koleksi, baris gilir ialah antara muka yang tersedia dalam antara muka Koleksi. Ia memanjangkan antara muka Koleksi. Ia tersedia dalam pakej Java.util dan menyokong semua operasi yang tersedia dalam antara muka Koleksi, bersama-sama dengan beberapa operasi pengekstrakan, sisipan dan pemeriksaan tambahan.

Mulakan Kursus Pembangunan Perisian Percuma Anda

Pembangunan web, bahasa pengaturcaraan, ujian perisian & lain-lain

Sintaks:

Interface Queue<E>
Salin selepas log masuk

Baris gilir ialah antara muka, bukan kelas, jadi ia tidak boleh langsung. Pengisytiharan menunjukkan bahawa baris gilir menerima nilai sebagai generik yang serupa dengan koleksi, dan kami boleh menghantar sebarang objek kepadanya. Java mempunyai pelbagai pelaksanaan antara muka Queue, yang boleh kita gunakan semasa menggunakan Queues. Ia adalah LinkedList dan PriorityQueue.

Baris gilir boleh diisytiharkan seperti di bawah:

Queue< Object > q = new LinkedList<>();
Salin selepas log masuk
Queue< Object > q = new PriorityQueue<>();
Salin selepas log masuk

Bagaimanakah baris gilir berfungsi di Jawa?

  • Seperti yang dinyatakan sebelum ini, antara muka Queue memanjangkan antara muka koleksi; oleh itu, ia menyokong semua kaedah operasi asas yang tersedia di dalamnya.
  • Pelaksanaan seperti LinkedList dan PriorityQueue melaksanakan kaedah khusus baris gilir yang diisytiharkan dalam antara muka Baris.
  • LinkedList memegang elemen sebagai standard LinkedList, iaitu, dalam susunan sisipan. PriorityQueue mengekalkan susunan semula jadi elemen yang dimasukkan.
  • Perhatikan bahawa kedua-dua pelaksanaan ini tidak selamat untuk benang, dan untuk ini, Java menyediakan satu lagi pelaksanaan bernama PriorityBlockingQueue, yang selamat berulir.

Jenis Ahli Gilir di Jawa

  • Memandangkan baris gilir ialah antara muka, ia hanya mengandungi kaedah abstrak dan tiada ahli data.
  • Baris gilir menyediakan hanya cara untuk mentakrifkan operasi yang dilaksanakan dalam kelas kanak-kanak.

Fungsi Gilir dalam Java

  • Memandangkan baris gilir menyokong struktur FIFO, ia membenarkan pemasukan elemen dari satu hujung dan mengalih keluar elemen dari hujung (depan) yang lain.
  • Ini ialah dua operasi asas yang disokong oleh baris gilir.
  • Semua kaedah yang terdapat dalam baris gilir boleh dibahagikan kepada dua kategori; jenis kaedah pertama membuang pengecualian sekiranya berlaku kegagalan operasi, seperti tiada unsur ditemui, dan dalam kaedah jenis kedua, bukannya pengecualian, sebarang nilai khusus seperti null atau false dikembalikan sekiranya berlaku kegagalan operasi .
  • Kepala dalam konsep baris gilir sentiasa mewakili elemen pertama dalam baris gilir; apabila dialih keluar, elemen kepala ini akan dialih keluar terlebih dahulu.

Di bawah adalah semua kaedah yang tersedia dalam baris gilir:

  Returns special value Throws exception
Insert offer(e) add(e)
Remove poll() remove()
Examine peek() element()
  Mengembalikan nilai istimewa Melemparkan pengecualian Sisipkan tawaran(e) tambah(e) Alih keluar poll() alih keluar() Periksa peek() elemen()

So as explained, two types of methods throw an exception and return a special value. There are three types of operation in this kind of operation: insertion, the second is removal, and the third is retrieval or examination. In the case of the remove operation, an object will be removed from the queue. Still, in the case of examination, the object will be returned without actually removing from the queue.

Examples of Queue in Java

Given below are the different examples of Queue in Java:

Example #1 – Add operation with LinkedList implementation

Code:

import java.util.LinkedList;
import java.util.Queue;
public class QueueOperations {
public static void main(String[] args) {
Queue<Integer> q = new LinkedList<Integer> ();
q.add(5);
q.add(2);
q.add(1);
q.add(4);
q.add(3);
System.out.println(q);
}
}
Salin selepas log masuk

Output:

Beratur di Jawa

Note here that the order of insertion is the same with output from left to write.

Example #2 – Let’s remove the added elements one by one

Code:

import java.util.LinkedList;
import java.util.Queue;
public class QueueOperations {
public static void main(String[] args) {
Queue<Integer> q = new LinkedList<Integer> ();
q.add(5);
q.add(2);
q.add(1);
q.add(4);
q.add(3);
System.out.println(q);
while (!q.isEmpty()) {
System.out.print(q.remove() + " ");
}
System.out.println("");
System.out.println(q);
}
}
Salin selepas log masuk

Output:

Beratur di Jawa

Here, we have used the function isEmpty() to check when the queue becomes empty after removing elements. The removal order is the same as per the insertion. After removing all the elements, we printed the queue and obtained an empty bracket at the end.

Example #3 – Insertion and Removal Operation on PriorityQueue

Code:

import java.util.PriorityQueue;
import java.util.Queue;
public class QueueOperations {
public static void main(String[] args) {
Queue<Integer> q = new PriorityQueue<Integer> ();
q.add(5);
q.add(2);
q.add(1);
q.add(4);
q.add(3);
System.out.println(q);
while (!q.isEmpty()) {
System.out.print(q.remove() + " ");
}
System.out.println("");
System.out.println(q);
}
}
Salin selepas log masuk

Output:

Beratur di Jawa

Here, we have used PriorityQueue, which will hold and return the elements depending upon the elements’ natural ordering or upon the comparator, if any passed. Note the insertion order and removal orders are not the same. The removal is based totally on the value of elements.

Example #4 – Examine operation on LinkedList

Code:

import java.util.LinkedList;
import java.util.Queue;
public class QueueOperations {
public static void main(String[] args) {
Queue<Integer> q = new LinkedList<Integer> ();
q.add(5);
q.add(2);
q.add(1);
q.add(4);
q.add(3);
System.out.println(q);
System.out.println( q.peek() );
System.out.println(q);
}
}
Salin selepas log masuk

Output:

Beratur di Jawa

Note here that we have used the peek() function, which will return the head of the queue without actually removing it. We printed the queue after performing the peek operation, and you can observe that the head element, which is 5, remains unchanged in the queue.

Example #5 – Examine operation on PriorityQueue

Code:

import java.util.PriorityQueue;
import java.util.Queue;
public class QueueOperations {
public static void main(String[] args) {
Queue<Integer> q = new PriorityQueue<Integer> ();
q.add(5);
q.add(2);
q.add(1);
q.add(4);
q.add(3);
System.out.println(q);
System.out.println( q.peek() );
System.out.println(q);
}
}
Salin selepas log masuk

Output:

Beratur di Jawa

This is similar to the previous example’s LinkedList operation, but note the head element is 1 because it’s a PriorityQueue.

Conclusion

Java utilizes the Queue interface as a means to maintain elements in insertion order. It supports operations like insertion, retrieval, and removal. There are alternative methods available for all the methods. We have seen examples of the most commonly used methods in queue operation.

Atas ialah kandungan terperinci Beratur di Jawa. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php
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