Java初学者:如何访问SortedSet条目的Hashmap?

时间:2012-06-02 19:52:29

标签: java hashmap sortedset

我正在学习java课程,教师让我们构建了一个像这样的HashMap:

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

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

稍后在应用程序中我应该设置它,以便用户可以选择他想要显示的模型,然后它将只显示来自该模型的汽车数据。现在我只是想着如何访问整个事物中的所有数据。我已经为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());

    }

帮助!感谢任何能够理顺我的人。

5 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分: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覆盖。

答案 2 :(得分:0)

所以你有这样的地图

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

如果您想要所有丰田汽车,那么您只需:

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

如果你想迭代,那么你可以这样做:

for(Car toyota : allToyotas) {
   System.out.println(toyota);
}

答案 3 :(得分: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);
    }
}

答案 4 :(得分:0)

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