Вы должны поддерживать коллекцию очередей. Поскольку каждая очередь имеет уникальное имя, наиболее подходящей коллекцией является Map
:
public class QueueManager {
private Map<String, List<Pcb>> queues = new HashMap<String, List<Pcb>>();
public boolean addQueue(String queueName) {
if (queues.containsKey(queueName)) {
// There is already a queue with that name
return false;
} else {
queues.put(queueName, new ArrayList<Pcb>());
return true;
}
}
}
Здесь я сделал предположение, что очередь реализована с ArrayList
, но, конечно, LinkedList
будет работатьпо аналогии. Тогда метод addPcb()
совершенно очевиден:
public void addPcb(Pcb pcb, String queueName) {
List<Pcb> queue = queues.get(queueName);
if (queue != null) {
queue.add(pcb);
} else {
throw new IllegalArgumentException("Queue does not exist: " + queueName);
}
}
Альтернативная реализация addPcb()
с использованием addQueue()
может быть:
public void addPcb(Pcb pcb, String queueName) {
addQueue(queueName);
List<Pcb> queue = queues.get(queueName);
queue.add(pcb);
}