2

クラスプロジェクトのためにJavaでプログラミングしています。私のプロジェクトでは、飛行機、空港、乗客がいます。

乗客の目的地の空港はランダムに作成されますが、その目的地の乗客のリストに追加する必要があります。

空港がファイルから読み取られるため、空港が異なる可能性がある限り、これらの空港に従ってリストを作成するにはどうすればよいですか?

私がやりたいことは次のようなものです:

List<Passenger> passengersToJFK = new ArrayList<Passenger>();
.
.
.

if(passenger.destination == "JFK"){
   passengersToJFK.add(passenger);
}

問題は、私が言ったように、空港の数と名前が異なる可能性があることです。そのため、空港ファイルに従ってリストを作成し、乗客の目的地空港に従ってそれらのリストに乗客を追加する一般的な表現をどのように行うことができますか?

ファイルから読み取った空港の数を取得して、同じ数のリストを作成することはできますが、このリストに別の名前を付けるにはどうすればよいでしょうか?

前もって感謝します

4

5 に答える 5

9

Mapこの乗客管理を中心とする特定のクラスで、目的地または空港と乗客のリストとの間の関連付けのレジストリを保持できます。

Map<String,List<Passenger>> flights = new HashMap<String,List<Passenger>>();

次に、新しい目的地を追加したいときはいつでも、新しい空のリストを入れて、

public void addDestination(String newDestination) {
    flights.put(newDestination, new ArrayList<Passenger>());
}

乗客を追加する場合は、 で表される目的地に基づいて乗客リストを取得しますString

public void addPassengerToDestination(String destination, Passenger passenger) {
    if(flights.containsKey(destination))
        flights.get(destination).add(passenger);        
}

Lists、Maps、Sets などの特定の多目的 Java クラスをもう少し掘り下げることをお勧めします。

于 2012-12-07T17:13:32.883 に答える
2

おそらくMap、空港名をキーとして空港の を作成Listし、値として乗客の を作成します。

例えば

Map<String, List<String>> airports = new HashMap<String, List<String>>();

airports.put("JFK", passengersToJFK);
于 2012-12-07T17:14:43.197 に答える
0

これを行う最善の方法は、3 つすべてのオブジェクトを作成することです。

次のような Airport オブジェクトがあるとします。

    クラス空港{
        文字列名;
        飛行機の飛行機を一覧表示します。
    }

次に、次のような飛行機ができます。

    クラス飛行機{
        文字列名; // ?? またはボディタイプ?または他に必要なもの
        Passenger の乗客を一覧表示します。
    }

このようにして、オブジェクトを相互に構成し、最終的には理解しやすく扱いやすくなります。

空港にはおそらく別の飛行機を追加するための「addAirplane」のようなメソッドがあり、飛行機オブジェクトにはaddPassengerメソッドがあります...

于 2012-12-07T17:20:11.493 に答える
0

リスト オブジェクトの実際の変数に一意の名前を付けることに集中するのではなく、文字列 (目的地 ID) からリスト (その目的地に向かう乗客) へのマップを作成し、そのマップにその場でリストを追加して、それぞれをリンクします。関連する宛先への新しいリスト。必要に応じて、そのマップのリストを更新します。

于 2012-12-07T17:15:45.317 に答える
0

プリミティブ、文字列、およびコレクションの観点から考えすぎているように聞こえますが、オブジェクトの観点からは十分ではありません。

Java はオブジェクト指向言語です。オブジェクトとカプセル化について考え始めます。

あなたはPassengerクラスで良いスタートを切りました。と続けてくださいAirport

に追加PassengersAirportますか? いいえ、彼らはに属していると思いますFlight

さらにコードを書く前に、問題について少し考えてみてください。

于 2012-12-07T17:13:34.570 に答える