3

我正在上 java 课,老师让我们建立一个像这样的 HashMap:

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

Car 对象从汽车文件(如Toyota Corolla 8 90000)中读取,并进行一些处理以将它们放入 Hashmap 中,如上所述。所以地图的键是一个字符串,它最终是制造商名称(丰田),然后值是汽车的 SortedSet。

稍后在应用程序中我应该设置它,以便用户可以选择他想要显示的模型,然后它将只显示来自该模型的汽车数据。现在我只是想知道如何访问整个事情中的所有数据。我已经为 Hashmap 编写了一些代码,并且可以使用迭代器显示制造商名称,但我不知道如何显示单个汽车数据。:(

这是我到目前为止所拥有的 - 这是一个片段,但我认为你们可以弄清楚:

    //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

是的,我是根据这个和其他评论想出来的!在这里感谢大家的帮助!哇!基本上,在构建 makeSetMap 时,我还需要构建制造商名称的地图(“makeMap”),例如(1-toyota,2-honda)等。我要在运行时扫描用户输入并收集我是使用,然后以某种方式使用该制造商名称来提取哈希图中的所有汽车并显示它们的数据。此代码片段是我缺少的关键: SortedSet<Car> carSortedSetTmp = makeSetMap.get(makeMap.get(choice));

于 2012-06-03T07:41:44.580 回答
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 回答