オンライン予約システムを設計する仕事があります。ユーザーが郵便番号/人数/予約時間を入力して、レストランのリストを取得できる場所。仮定(ユーザーとレストランは常に同じ都市にある)
各レストランには、座席数が異なる複数のテーブルがあります。なので、4人掛けのテーブルが2つと、4人掛けのテーブルが4つ。
使用する適切なデータ構造を考え出すのに苦労しています。
私のクラスは次のとおりです
Restaurant : timeofopening、timeOfClosing、totalNoOfSeatsAvailable が含まれています。レストラン内にテーブル情報を保存する方法がわかりません。テーブルに別のクラスを用意しても意味がありません。私が必要とするすべての情報は、どのように多くのテーブルが無料で、そのサイズはいくらかです。
予約: 実際の予約を維持し、予約をキャンセルすることができます
ReservationSystem : `List checkAvailability(long time, int people)' へのインターフェースが含まれています。これはどのようにしてこのリストを返しますか? 私は当初、priorityQueue を使用して、利用可能な最大座席数でキューを維持することを考えていました。しかし、そのリストを調べて、予約を行う時間が正しいかどうかを確認し、予約が行われたら、このキューを更新します。1 つの問題は、キューがすべての重複を行うことです。
私の具体的な質問は次のとおりです。
- 各レストラン内にテーブル情報を保存するにはどうすればよいですか?
- このレストランのリストを維持するための最良の方法は何ですか。これにより、この情報を毎回ソートすることなくリストを返すことができます。
編集:テーブル情報の保存方法に関する質問について。私の具体的な懸念は、テーブルクラスを保存すると、不要なオブジェクトが作成されることになるということです。これが私の推論です。それぞれ 2 人が座れる 5 つのテーブルには、まったく同じオブジェクトがあります。つまり、それらの間で異なる意味のある情報がないということです。数字が必要なだけです。座席/テーブルの数。
3つの配列を作成することを考えました。テーブルが 1、2 などを表すとしましょう。int[] differentSeatingOnTable; そのインデックスはテーブルであり、値は許可された座席です。次に、インデックスがテーブルで、値がそのようなテーブルの総数である totalNoOfThosetable を持つテーブルの配列。フリー テーブル freeTables についても同様です。ここで、インデックスはテーブルであり、そのようなフリー テーブルがいくつ残っているかを示します。