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

标签 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;
    }
}

非常感谢任何帮助

最佳答案

你不能只获取嵌套映射的键吗?

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/

相关文章:

java - 为什么我的 JSONObject(String) 返回空?

java - 如何使用 JasperReports 生成受密码保护的 Excel 报告?

java - 无法在 Android Studio 中调用初始化方法

java - 如何使用 JAVA 在 CXF Restful Web 服务中包含异常处理机制

java - 如何测试 resp.getOutputStream()

java - ZMQ - 具有多个前端服务实例和后端工作人员的请求/响应

java - java中的动态对象创建

java - Android Studio : Gradle project sync failed with Java "non-zero exit value 2"

java - 从 jdk1.7.0_25 迁移到 jdk1.7.0_40 时的性能回归

java - Android 特定的通过在谓词上匹配集合中的属性来查找对象