我应该如何使用内部键在嵌套的 HashMap 中搜索项目?

问题描述 投票:0回答:1

我有一个嵌套的 HashMap

HashMap<String, TreeMap<Integer, Item>>
,现在我知道 TreeMap 中的内部键
Id(Integer)
,但没有 HashMap 中的键
String
。我可以使用一些内置方法或其他方法而不迭代 HashMap 来获得我想要的吗?

以前,如果我知道钥匙

String
,我可以使用
HashMap.get(String key)
来获取物品,然后使用
TreeMap.get(Integer inner_key)
,但现在如果我没有外部钥匙,我不知道该怎么办。迭代 HashMap 是唯一的方法吗?

java search nested hashmap treemap
1个回答
0
投票

“...我可以使用一些内置方法或其他方法而不迭代 HashMap 来获得我想要的吗?...”

不幸的是没有。虽然,一次迭代只有几行。

String key(int i, HashMap<String, TreeMap<Integer, Item>> map) {
    for (Map.Entry<String, TreeMap<Integer, Item>> e : map.entrySet())
        if (e.getValue().containsKey(i)) return e.getKey();
    return null;
}

或者,使用stream

String key(int i, HashMap<String, TreeMap<Integer, Item>> map) {
    return map.entrySet()
              .stream()
              .filter(x -> x.getValue().containsKey(i))
              .findFirst()
              .get().getKey();
}
© www.soinside.com 2019 - 2024. All rights reserved.