CodeGym /Java блог /Случаен /Метод Queue poll() в Java с примери
John Squirrels
Ниво
San Francisco

Метод Queue poll() в Java с примери

Публикувано в групата

Какво е опашка?

Точно Howто подсказва името, Queue е обща структура от данни в Java, следваща реда на вмъкване First In First Out (FIFO) . Лесно можете да си го представите като опашка в магазин за хранителни стоки. Колкото по-рано влезеш, толкова по-бързо излезеш. Това означава, че елементът, добавен към опашката по-рано, също ще напусне по-рано. Първият елемент (отпред) на опашката също се нарича глава .Метод Queue poll() в Java с примери - 2
Фигура 1.0: Проста опашка в Java

Какво представлява методът poll() на Queue?

Методът poll() ви позволява да извлечете и премахнете най-горния елемент (глава) на опашка. В нашия пример, когато извикате poll() в горната опашка, ще получите '1' като резултат. И в опашката ще останат само 4 елемента.Метод Queue poll() в Java с примери - 3
Фигура 1.1: След използване на метода poll() на опашка

poll() метод в Java

Пример 1

Разгледайте прост пример за извикване на функцията poll() на опашката, показана на фигура 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");        
	}
}
Изход
Опашка: [1, 2, 3, 4, 5, 6] poll() върна: 1 Опашка е актуализирана! [2, 3, 4, 5, 6] poll() върна: 2 Опашката е актуализирана! [3, 4, 5, 6] poll() върна : 3 Опашката е актуализирана! [4, 5, 6]
Моля, обърнете внимание How след всяко извикване на poll() размерът на опашката се намалява с 1 и главата се връща.

Пример 2

Нека да разгледаме друг пример за дни в седмицата. Ще извикаме poll() един по един през делничните дни и ще видим How ще изглежда.

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");                   
	}
}
Изход
Дни от седмицата: [неделя, понеделник, вторник, сряда, четвъртък, петък, събота] върната анкета(): Актуализирани неделни дни! [Понеделник, вторник, сряда, четвъртък, петък, събота] анкета() върна: Понеделник Дни Актуализирани! [Вторник, сряда, четвъртък, петък, събота] анкета() върна: Актуализирани дни във вторник! [сряда, четвъртък, петък, събота]

Как poll() се различава от peek() и remove()?

За начинаещите е много лесно да смесят трите различни концепции, тъй като изглеждат доста сходни. Нека “q” е опашка, тогава ето How се различават:
  • q.poll() : премахва и извлича главата на опашката
  • q.peek() : не премахва, а само извлича/връща главата на опашката
  • q.remove() : премахва и извлича главата на опашката
Така че изглежда, че remove() и poll() са абсолютно еднакви. Те работят по същия начин при нормални обстоятелства. Но когато опашката е празна, remove() хвърля NoSuchElementException , докато poll връща null .

Пример 3

Сега нека да разгледаме набързо няколко примера за горните три функции.

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()); 

	}
}
Изход
Дни от седмицата: [неделя, понеделник, вторник, сряда, четвъртък, петък, събота] peek() върна: Дни от неделя от седмицата: [неделя, понеделник, вторник, сряда, четвъртък, петък, събота] peek() върна: дни от седмицата в неделя : [неделя, понеделник, вторник, сряда, четвъртък, петък, събота] remove() върна: Актуализирани неделни дни! [Понеделник, вторник, сряда, четвъртък, петък, събота] remove() върна: Понеделник дни Актуализирано! [Вторник, сряда, четвъртък, петък, събота] remove() върна: вторник remove() върна: сряда remove() върна: четвъртък remove() върна: петък Дни Актуализирано! [Събота] анкета() върна: съботните дни са актуализирани! [] poll() върна: null Изключение в нишката "main" java.util.NoSuchElementException в java.util.LinkedList.removeFirst(LinkedList.java:270) в java.util.LinkedList.remove(LinkedList.java:
Както можете да видите, след извикването на peek() работните дни остават същите. И тъй като използваме remove() or poll(), размерът на опашката се намалява с 1 заедно с връщането на главата. Освен това, java.util.NoSuchElementException се хвърля, когато извикаме remove() на празна опашка, докато такова изключение не се хвърля за използване на poll() .

Заключение

В крайна сметка се надяваме, че сте запознати с използването и работата на метода poll() на опашките. Въпреки това, в случай на объркване, винаги можете да се върнете тук, за да се консултирате. Честито codeиране!
Коментари
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION