0

さまざまな空母の遅延便を計算するための宿題の問題があります。CSVファイルから読み取っており、合計フライト数と遅延フライト数の「キャリア」のクラスを作成しています。キャリアが多い(10個程度)ので、CSV(または2D配列)から読み取ったキャリアオブジェクトを作成するにはどうすればよいですか。

それ以外の

carrier UA = new carrier("Us Airways", 100, 50);
carrier Delta = new carrier("Delta", 100, 50);

すべてのオブジェクトをハードコーディングします。

現在、CSVデータは2D配列であり、非オブジェクト指向コードは次のとおりです。

    public static void main (String [] args) throws Exception{

    CSVReader reader = new CSVReader(new FileReader("delayed.csv"));
    String [] nextLine;

    String[][] flightData = new String[221][3];
    int i=0;    
        while ((nextLine = reader.readNext()) != null) {

            for(int r = 0; r<2; r++){
            flightData[i][0] = nextLine[1];
            flightData[i][1] = nextLine[6];
            flightData[i][2] = nextLine[7];
            }
        i++;
        //System.out.println("Carrier: " + nextLine[1] + "\t\tTotal: " + nextLine[6] + "\t\tDelayed: " + nextLine[7] + "");
        }
        while(flightData != null){
        carrier 
        }
} 

ありがとう。

4

1 に答える 1

1
List<Carrier> listCarrier = new ArrayList<Carrier>();      

while ((nextLine = reader.readNext()) != null) {

    listCarrier.add(new Carrier(nextLine[1], Integer.valueOf(nextLine[6]), Integer.valueOf(nextLine[7])));

}

クラスCarrierは大文字で始める必要があることに注意してください。

重複を避けたい場合は、次のようにArrayListの代わりにHashMapを使用できます。

Map<String, Carrier> listCarrier = new HashMap<String, Carrier>();   

新しいレコードを挿入するには、次を使用します。

Carrier carrier = new Carrier(nextLine[1], Integer.valueOf(nextLine[6]), Integer.valueOf(nextLine[7]));
listCarrier .put(nextLine[1],carrier );
//Here the key is the carrier name, and the value is the carrier object

同じ名前で値が異なる重複したキャリアがある場合、最後のキャリアのみがHashMapに保持されます。

リストからキャリアを取得するには、次を使用します。

listCarrier.get("carrier_name")

そして、これは、利用可能な場合、マップから「carrier_name」という名前のキャリアを返します。

于 2012-09-26T00:47:26.223 に答える