我有一个嵌套的 HashMap
HashMap<String, TreeMap<Integer, Item>>
,现在我知道 TreeMap 中的内部键 Id(Integer)
,但没有 HashMap 中的键 String
。我可以使用一些内置方法或其他方法而不迭代 HashMap 来获得我想要的吗?
以前,如果我知道钥匙
String
,我可以使用HashMap.get(String key)
来获取物品,然后使用TreeMap.get(Integer inner_key)
,但现在如果我没有外部钥匙,我不知道该怎么办。迭代 HashMap 是唯一的方法吗?
“...我可以使用一些内置方法或其他方法而不迭代 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();
}