package p20_zbieranie_danych;

import java.util.PriorityQueue;
import java.util.Queue;
import java.util.Scanner;

public class ZbieranieDanych4_PriorityQueue {
	// * Kolejka priorytetowa może nie zachowywać kolejności (możliwe jest tzw. "zagłodzenie").
	//   Następnym elementem do pobranie jest element o najwyższym priorytecie
	//   - w Javie jest to element o najmniejszej wartości (np. napis najwcześniejszy alfabetycznie).

	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		
		Queue<String> kolejka = new PriorityQueue<>();
		System.out.println(kolejka);
		System.out.println("Podawaj kolejne elementy, aby dodać do kolejki.\nWpisz '?', aby pobrać element z kolejki, a Enter aby zakończyć program");
		
		while(true) {
			System.out.println("Kolejka: " + kolejka);
			System.out.print("> ");
			String napis = scanner.nextLine();
			if(napis.isEmpty()) break;
			if(napis.equals("?")) {
				String pobrane = kolejka.poll();
				System.out.println("Pobrany element: " + pobrane);
			} else {
				System.out.println("Dodany element: " + napis);
				kolejka.add(napis);
			}
		}
		
		System.out.println("Końcowy rozmiar kolejki " + kolejka.size());
		System.out.println(kolejka);
		System.out.println("Koniec programu");
	}

}
