繁体   English   中英

如何创建方法来生成新的 LinkedList?

[英]How can I create method to generate new LinkedList?

我正在尝试创建一个创建新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>();

}

我也可能以错误的方式看待这个问题。 我只是想创建linkedList atm。 但我的要求如下:

boolean addQueue(字符串)

此方法将有一个字符串参数。 它将返回 boolean。 它将添加一个由参数指定的新队列。 例如 addQueue(“ready”) 将在队列列表中创建一个名为“ready”的新队列。 如果已经有指定名称的队列,则此方法将返回 false。 例如,如果您已经有一个名为“ready”的队列并且您调用 addQueue(“ready”),它将返回 false。 否则,它将创建队列并返回 true。

问题是您有两个名为s的不同变量 - String s参数(它是一个变量)和LinkedList<obj> s

只需重命名其中一个。

您必须维护一组队列。 因为每个队列都有一个唯一的名称,所以最合适的集合是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);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM