基本上,我想做这样的事情:
patientReference = ((Patient) TreatmentRoomQueue).peekFront();
但我的 IDE 声称这些类型是不可转换的。( required: Patient; found: TreatmentRoomQueue<Patient>
)。您可以看到我正在尝试将 Node 转换为 Patient 对象,并且我正在尝试调用我的 peekFront 方法,该方法应该返回列表中的第一个节点。然而很明显这是非法的。我的语法可能是错误的,或者我只是以错误的方式处理这个问题。
我这样做的动机是我有一个运行(虚构的)急诊室的程序。我需要从我的 TreatmentRoomQueue 中找人,让他们出院,然后,如果有人在我的 WaitingRoomQueue 中,将他们转移到 Treatment Room。我没有使用内置在 LinkedList 类中的 Java,我使用的是我自己的链表(我以前使用过并且知道它可以工作)。
我只能说搞砸了,使用数组而不是链表,但由于链表对我来说有点难以理解,我认为从链表实现中可以学到更多东西。
任何指针、代码片段、建议或任何将不胜感激的东西!谢谢阅读。
我以这种方式在我的 Main 类中声明 TreatmentRoomQueue:
TreatmentRoomQueue<Patient> TreatmentRoomQueue = new TreatmentRoomQueue();
这是 TreatmentRoomQueue 的代码:
public class TreatmentRoomQueue <ClassType>
{
private Node frontQueueNodeRef = null;
private Node backQueueNodeRef = null;
private int counter = 0;
private class Node
{
private ClassType classTypeObjectRef;
private Node nextNodeRef;
Node(ClassType newClassTypeObjectRef)
{
classTypeObjectRef = newClassTypeObjectRef;
}
}
private Node peekFront()
{
return frontQueueNodeRef;
}
public void enqueue(ClassType enqueueObjectRef)
{
Node queueNodeRef = new Node(enqueueObjectRef);
if (frontQueueNodeRef == null)
{
frontQueueNodeRef = backQueueNodeRef = queueNodeRef;
}
else {
backQueueNodeRef.nextNodeRef = queueNodeRef;
backQueueNodeRef = queueNodeRef;
counter++;
}
}
public ClassType dequeue()
{
if ( frontQueueNodeRef == null )
{
return null;
} else {
ClassType firstClassTypeObjectRef = frontQueueNodeRef.classTypeObjectRef;
frontQueueNodeRef = frontQueueNodeRef.nextNodeRef;
counter--;
return firstClassTypeObjectRef;
}
}
public boolean isFull()
{
return false;
}
public boolean isEmpty()
{
return frontQueueNodeRef == null;
}
}