CodeGym /Blog Java /rawak /Kaedah tinjauan giliran () dalam Java dengan Contoh
John Squirrels
Tahap
San Francisco

Kaedah tinjauan giliran () dalam Java dengan Contoh

Diterbitkan dalam kumpulan

Apakah itu Queue?

Sama seperti namanya, Baris Gilir ialah struktur data biasa di Jawa berikutan urutan sisipan Pertama Masuk Dahulu (FIFO) . Anda boleh membayangkannya dengan mudah sebagai barisan di kedai runcit. Lagi cepat anda masuk, lagi cepat anda pergi. Ini bermakna elemen yang ditambahkan pada baris gilir tadi akan keluar lebih awal juga. Elemen pertama (depan) baris gilir juga dipanggil head .Kaedah tinjauan giliran () dalam Java dengan Contoh - 2
Rajah 1.0: Baris gilir mudah di Jawa

Apakah kaedah poll() Queue?

Kaedah tinjauan pendapat() membolehkan anda mendapatkan semula dan mengalih keluar elemen paling atas (kepala) Baris Gilir. Dalam contoh kami, apabila anda memanggil poll() pada baris gilir di atas, anda akan menerima '1' sebagai hasilnya. Dan akan ada hanya 4 elemen yang tinggal dalam baris gilir.Kaedah tinjauan giliran () dalam Java dengan Contoh - 3
Rajah 1.1: Selepas menggunakan kaedah poll() pada baris gilir

kaedah poll() dalam Java

Contoh 1

Lihatlah contoh mudah untuk memanggil fungsi poll() pada baris gilir yang ditunjukkan dalam rajah 1.0.

import java.util.LinkedList;
import java.util.Queue;

public class QueuePollMethod {

	public static void main(String[] args) {

	  // create a queue of die rolls 
        Queue dieRoll   = new LinkedList(); 
  
        // Add 6 integers one by one
        dieRoll.add(1); 
        dieRoll.add(2); 
        dieRoll.add(3); 
        dieRoll.add(4); 
        dieRoll.add(5); 
        dieRoll.add(6); 
  
        // print the original queue 
        System.out.println("Queue:\t" + dieRoll + "\n"); 
  
        // after calling poll()
        System.out.println("poll() returned : " + dieRoll.poll()); 
        System.out.println("Queue Updated!\t" + dieRoll + "\n"); 

        // after calling poll()
        System.out.println("poll() returned : " + dieRoll.poll()); 
        System.out.println("Queue Updated!\t" + dieRoll + "\n"); 
        
        // after calling poll()
        System.out.println("poll() returned : " + dieRoll.poll()); 
        System.out.println("Queue Updated!\t" + dieRoll + "\n");        
	}
}
Pengeluaran
Baris gilir: [1, 2, 3, 4, 5, 6] poll() dikembalikan : 1 Baris Dikemas Kini! [2, 3, 4, 5, 6] poll() dikembalikan : 2 Baris Dikemas Kini! [3, 4, 5, 6] poll() dikembalikan : 3 Baris Dikemas Kini! [4, 5, 6]
Sila ambil perhatian, bagaimana selepas setiap poll() saiz panggilan baris gilir dikurangkan sebanyak 1 dan kepala dikembalikan.

Contoh 2

Mari lihat satu lagi contoh hari dalam seminggu. Kami akan memanggil poll() satu demi satu pada hari bekerja dan melihat rupanya.

import java.util.LinkedList;
import java.util.Queue;

public class QueuePollMethod {

	public static void main(String[] args) {
        
        Queue days   = new LinkedList(); 
        
        days.add("Sunday");
        days.add("Monday");
        days.add("Tuesday");
        days.add("Wednesday");
        days.add("Thursday");
        days.add("Friday");
        days.add("Saturday");

        // print all the days in the week
        System.out.println("Week Days: \t" + days + "\n"); 
  
        // after calling poll()
        System.out.println("poll() returned: " + days.poll()); 
        System.out.println("Days Updated!\t" + days + "\n"); 

        // after calling poll()
        System.out.println("poll() returned: " + days.poll()); 
        System.out.println("Days Updated!\t" + days + "\n"); 
        
        // after calling poll()
        System.out.println("poll() returned: " + days.poll()); 
        System.out.println("Days Updated!\t" + days + "\n");                   
	}
}
Pengeluaran
Hari Minggu: [Ahad, Isnin, Selasa, Rabu, Khamis, Jumaat, Sabtu] undian() dikembalikan: Hari Ahad Dikemas Kini! [Isnin, Selasa, Rabu, Khamis, Jumaat, Sabtu] undian() dikembalikan: Hari Isnin Dikemaskini! [Selasa, Rabu, Khamis, Jumaat, Sabtu] tinjauan pendapat() dikembalikan: Hari Selasa Dikemas Kini! [Rabu, Khamis, Jumaat, Sabtu]

Bagaimanakah poll() berbeza daripada peek() dan remove()?

Sangat mudah bagi pemula untuk menggabungkan tiga konsep yang berbeza kerana ia kelihatan agak serupa. Mari kita "q" menjadi baris gilir, kemudian berikut ialah cara mereka berbeza:
  • q.poll() : mengalih keluar dan mendapatkan semula kepala baris gilir
  • q.peek() : tidak mengeluarkan tetapi hanya mengambil/mengembalikan kepala baris gilir
  • q.remove() : mengalih keluar dan mendapatkan semula kepala baris gilir
Jadi nampaknya remove() dan poll() adalah sama. Mereka bekerja sama dalam keadaan biasa. Tetapi apabila baris gilir kosong, remove() membuang NoSuchElementException , manakala poll returns null .

Contoh 3

Sekarang mari kita lihat beberapa contoh tiga fungsi di atas.

import java.util.LinkedList;
import java.util.Queue;

public class QueuePollMethod {

	public static void main(String[] args) {
        
        Queue days   = new LinkedList(); 
        
        days.add("Sunday");
        days.add("Monday");
        days.add("Tuesday");
        days.add("Wednesday");
        days.add("Thursday");
        days.add("Friday");
        days.add("Saturday");

        // print all the days in the week
        System.out.println("Week Days: \t" + days + "\n"); 
  
        // after calling peek()
        System.out.println("peek() returned: " + days.peek()); 
        System.out.println("Week Days: \t" + days + "\n"); 

        System.out.println("peek() returned: " + days.peek()); 
        System.out.println("Week Days: \t" + days + "\n"); 
        
        // after calling remove()
        System.out.println("remove() returned: " + days.remove()); 
        System.out.println("Days Updated!\t" + days + "\n"); 
        
        System.out.println("remove() returned: " + days.remove()); 
        System.out.println("Days Updated!\t" + days + "\n"); 
       
        System.out.println("remove() returned: " + days.remove()); 
        System.out.println("remove() returned: " + days.remove()); 
        System.out.println("remove() returned: " + days.remove()); 
        System.out.println("remove() returned: " + days.remove()); 

        System.out.println("Days Updated!\t" + days + "\n"); 
 
        // after calling poll()
        System.out.println("poll() returned: " + days.poll()); 
        System.out.println("Days Updated!\t" + days + "\n");           
        
        System.out.println("poll() returned: " + days.poll()); 
        System.out.println("remove() returned: " + days.remove()); 

	}
}
Pengeluaran
Hari Minggu: [Ahad, Isnin, Selasa, Rabu, Khamis, Jumaat, Sabtu] peek() dikembalikan: Ahad Minggu Hari: [Ahad, Isnin, Selasa, Rabu, Khamis, Jumaat, Sabtu] peek() dikembalikan: Minggu Hari Ahad : [Ahad, Isnin, Selasa, Rabu, Khamis, Jumaat, Sabtu] remove() dikembalikan: Hari Ahad Dikemaskini! [Isnin, Selasa, Rabu, Khamis, Jumaat, Sabtu] remove() dikembalikan: Hari Isnin Dikemaskini! [Selasa, Rabu, Khamis, Jumaat, Sabtu] keluarkan() dikembalikan: Selasa keluarkan() dikembalikan: Rabu keluarkan() dikembalikan: Khamis keluarkan() dikembalikan: Hari Jumaat Dikemaskini! [Sabtu] poll() dikembalikan: Hari Sabtu Dikemaskini! [] poll() dikembalikan: null Exception dalam thread "utama" java.util.NoSuchElementException di java.util.LinkedList.removeFirst(LinkedList.java:270) di java.util.LinkedList.remove(LinkedList.java:
Seperti yang anda lihat selepas memanggil peek() hari kerja tetap sama. Dan semasa kami menggunakan remove() atau poll() saiz baris gilir dikurangkan sebanyak 1 bersama-sama mengembalikan kepala. Selain itu, java.util.NoSuchElementException dilemparkan apabila kita memanggil remove() pada baris gilir kosong, manakala tiada pengecualian sedemikian dilemparkan untuk menggunakan poll() .

Kesimpulan

Pada akhirnya, kami berharap anda sudah biasa dengan penggunaan dan cara kerja kaedah poll() bagi Baris Gilir. Walau bagaimanapun, sekiranya terdapat kekeliruan, anda sentiasa boleh kembali ke sini untuk berunding. Selamat Mengekod!
Komen
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION