Как я могу создать метод для создания нового LinkedList? - PullRequest
1 голос
/ 31 октября 2019

Я пытаюсь создать метод, который создает новый LinkedLists. Я хочу передать параметр String для использования в качестве нового идентификатора LinkedList, но я получаю сообщение об ошибке "java: variable s is already defined in method createQueue(java.lang.String)"

В любом случае можно использовать String для создания нового LinkedList как это? Мне нужно сделать это таким образом для назначения, чтобы я не мог изменить объявление метода.

public void createQueue(String s){

   LinkedList<obj> s = new LinkedList<obj>();

}

Возможно, я тоже смотрю на это неправильно. Я просто пытаюсь создать банкомат связанный список. Но мои требования следующие:

логический addQueue (String)

Этот метод будет иметь параметр String. Он вернет логическое значение. Это добавит новую очередь, указанную параметром. Например, addQueue («готово») создаст новую очередь с именем «готово» к списку очередей. Если очередь с указанным именем уже существует, этот метод вернет false. Например, если у вас уже есть очередь с именем «ready» и вы вызываете addQueue («ready»), она вернет false. В противном случае он создаст очередь и вернет true.

Ответы [ 2 ]

0 голосов
/ 31 октября 2019

Вы должны поддерживать коллекцию очередей. Поскольку каждая очередь имеет уникальное имя, наиболее подходящей коллекцией является 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);
}
0 голосов
/ 31 октября 2019

Проблема в том, что у вас есть две разные переменные с именами s - параметр String s (который является переменной) и LinkedList<obj> s.

Просто переименуйте одну из них.

...