3

私はJavaクラスを受講しており、インストラクターは次のようなHashMapを作成してもらいました。

Map<String, SortedSet<Car>> makeSetMap = new HashMap<String, SortedSet<Car>>();

Carオブジェクトは(のようなToyota Corolla 8 90000)車のファイルから読み込まれ、上記のようにハッシュマップに取り込むためにいくつかの処理を行います。したがって、マップのキーは文字列であり、最終的にはメーカー名(Toyota)になり、値はSortedSetofCarsになります。

アプリの後半で、ユーザーが表示したいモデルを選択できるように設定することになっています。そうすると、そのモデルの車のデータだけが表示されます。今のところ、すべてのデータにアクセスする方法を考えているだけです。ハッシュマップのコードをいくつか記述し、イテレーターでメーカー名を表示することはできますが、個々の車のデータを表示する方法がわかりません。:(

これが私がこれまでに持っているものです-それはスニペットですが、皆さんはそれを理解できると思います:

    //I'm starting to have trouble here..
    Set<String> brands = makeSetMap.keySet();
    System.out.println("Brands are: " + brands.toString());
    Iterator<String> brandsIt = brands.iterator();

    while (brandsIt.hasNext())
    {
        SortedSet<Car> brandmodels;
        //brandmodels = brandsIt.next();
        //System.out.println("Working on: " +brandmodels.toString());

    }

ヘルプ!私をまっすぐにすることができる人に感謝します。

4

5 に答える 5

3

すべてのデータにアクセスするには、次のようなものを使用できます。

for (Map.Entry<String, SortedSet<Car>> entry : makeSetMap.entrySet()) {
    String manufacturer = entry.getKey();
    SortedSet<Car> cars = entry.getValue();
    System.out.println("Working on: " + manufacturer);

    for (Car car : cars) {
        System.out.println(" Car: " + car);
    }
}

特定のメーカーの車にアクセスするには、次のようなものを使用できます。

for (Car car : makeSetMap.get("Toyota")) {
    System.out.println("Car: " + car);
}
于 2012-06-02T20:14:34.277 に答える
1

各メーカーのすべての車種を印刷するには:

Map<String, SortedSet<Car>> makeSetMap = new HashMap<String, SortedSet<Car>>();

// ...

for(String key: makeSetMap.keySet()) { // loop through all manufacturers
   SortedSet<Car> cars = makeSetMap.get(key);
   for(Car c: cars) { // loop through all cars of that key
       System.out.println(key + " " + car);
   }
}

CarクラスにtoStringオーバーライドがあると仮定します。

于 2012-06-02T20:00:23.233 に答える
0

だからあなたはこのような地図を持っています

Map<String, Set<? extends Car>> carMap = ...

そして、あなたがすべてのトヨタの車が欲しいなら、あなたは単にするでしょう:

Set<? extends Car> allToyotas = carMap.get("Toyota");

繰り返したい場合は、次のことができます。

for(Car toyota : allToyotas) {
   System.out.println(toyota);
}
于 2012-06-02T20:00:36.970 に答える
0

このようなもの?

Set<String> brands = makeSetMap.keySet();
System.out.println("Brands are: " + brands.toString());

for(String brand : makeSetMap.keySet())    {
    SortedSet<Car> brandmodels = makeSetMap.get(brand);
    for(Car car : brandmodels){
        System.out.println(car);
    }
}
于 2012-06-02T20:04:22.660 に答える
0

はい、私はこれと他のコメントに基づいてそれを理解しました!ここであなたの助けをありがとう!ふぅ!基本的に、makeSetMapを作成する際に、(1-toyota、2-honda)などのメーカー名のマップ( "makeMap")も作成する必要がありました。実行時にユーザー入力をスキャンして収集しました。使用するには、どういうわけかそのメーカー名を使用して、ハッシュマップ内のすべての車を抽出し、それらのデータを表示します。このコードスニペットは私が見逃していた鍵でした: SortedSet<Car> carSortedSetTmp = makeSetMap.get(makeMap.get(choice));

于 2012-06-03T07:41:44.580 に答える