Моделирование очереди пациентов в кабинете врача

Для очереди 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). Вариант однопоточный: при конкурентном использовании нужна синхронизация или потокобезопасная очередь.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее