使用相同的外部映射键从嵌套的HashMap中检索所有相关值

时间:2015-08-01 23:23:08

标签: java

我有一张Map,其值也是Map:

HashMap<String, Map<String, Integer>> map;

我填充了它,以便值类似于:

"Red"="Apple",10
"Red"="Cherry",5
"Red"="Strawberry",7
"Yellow"="Banana",12
"Orange"="Orange",9

我基本上希望能够传递Red并检索嵌套地图的所有相关键(AppleCherryStrawberry)。当我使用以下代码时,似乎只返回一个值而不是全部:

public class Groceries {

    private HashMap<String, Map<String, Integer>> groceries;

    public Groceries() {
        groceries = new HashMap<>();
    }

    public Set<String> getFruitsGivenColor(String color) {
        Set<String> fruits = new HashSet<>();
        HashMap<String, Integer> map = groceries.get(origin);
        for (HashMap.Entry<String,Integer> entry : map.entrySet()) {
            fruits.add(entry.getKey());
        }
        return fruits;
    }
}

非常感谢任何帮助

1 个答案:

答案 0 :(得分:0)

你不能只获得嵌套地图的键吗?

String key = "Red";
Set<String> keys = groceries.get(key).keySet();   //this is what you want

此外,听起来你可能put将几个对分别用于每个映射,并覆盖之前的put个调用,从而产生一个元素。如果您正在做类似的事情:

map.put("Red", appleMap);
map.put("Red", cherryMap);
map.put("Red", strawberryMap);

你应该这样做:

map.put("Red", appleMap);

for (String key : cherryMap)
{
    map.get("Red").put(cherryMap.get("Red"));
}

for (String key : strawberryMap)
{
    map.get("Red").put(strawberryMap("Red"));
}