Для очереди FIFO подойдёт ArrayDeque: register добавляет пациента в конец, accept извлекает из начала. Пустую очередь нужно обработать отдельно, не сообщая о несуществующем приёме.
Моделирование очереди пациентов в кабинете врача
Для очереди FIFO подойдёт ArrayDeque: register добавляет пациента в конец, accept извлекает из начала. Пустую очередь нужно обработать отдельно, не сообщая о несуществующем приёме.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Создайте класс MedicalOffice, реализующий логику работы очереди в медицинском кабинете.
- Метод
register()— помещает нового пациента в конец очереди. - Метод
accept()— удаляет первого пациента из очереди и выводит сообщение: "Пациент принят."
public class Main {
public static void main(String[] args) {
// пример использования
}
}
Ответ
Для очереди FIFO подойдёт ArrayDeque: register добавляет пациента в конец, accept извлекает из начала. Пустую очередь нужно обработать отдельно, не сообщая о несуществующем приёме.
class MedicalOffice {
private final java.util.Queue<String> patients = new java.util.ArrayDeque<>();
public void register(String patient) {
patients.add(java.util.Objects.requireNonNull(patient));
}
public void accept() {
if (patients.poll() == null) {
System.out.println("Очередь пуста.");
return;
}
System.out.println("Пациент принят.");
}
}
Имя String здесь условно представляет пациента; в реальной модели лучше ID. Операции амортизированно O(1). Вариант однопоточный: при конкурентном использовании нужна синхронизация или потокобезопасная очередь.