基本的に、私はこのようなことをしたいと思います:
patientReference = ((Patient) TreatmentRoomQueue).peekFront();
しかし、私のIDEは、型は変換できないと主張しています。(required: Patient; found: TreatmentRoomQueue<Patient>
)。ノードをPatientオブジェクトとしてキャストしようとしていることと、リストの最初のノードを返す必要があるpeekFrontメソッドを呼び出そうとしていることがわかります。しかし、これが違法であることは明らかです。私の構文が間違っている可能性があります。または、これに間違った方法でアプローチしている可能性があります。
この背後にある私の動機は、(架空の)緊急治療室を運営するためのプログラムを持っていることです。私は、TreatmentRoomQueueから誰かを取得して退院させ、WaitingRoomQueueに誰かがいる場合は、それらを治療室に移動する必要があります。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;
}
}