我有一个 Map,其值也是一个 Map:
HashMap<String, Map<String, Integer>> map;
我已经填充了它,使得值类似于:
"Red"="Apple",10
"Red"="Cherry",5
"Red"="Strawberry",7
"Yellow"="Banana",12
"Orange"="Orange",9
我基本上希望能够传入 Red
并检索嵌套映射的所有相关键(Apple
、Cherry
、Strawberry
)。当我使用以下代码时,它似乎只返回一个值而不是全部:
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;
}
}
非常感谢任何帮助
最佳答案
你不能只获取嵌套映射的键吗?
String key = "Red";
Set<String> keys = groceries.get(key).keySet(); //this is what you want
此外,听起来您可能会将几对放入映射中,每个对具有相同的键,因此会覆盖之前的 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"));
}
关于java - 使用相同的外映射键从嵌套 HashMap 中检索所有相关值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31767159/