我有一个问题,在Google搜索后找不到。问题是我有hashmap
,其中包含另一个hashmap
作为键,并且与它相反是单个值。我想获取该hashmap
的值。例如,下面是一段代码。
HashMap< Hashmap< Integer, String>, Integer> outerHashMap = new HashMap< Hashmap< Integer, String>, Integer>();
Hashmap< Integer, String> innerMap1 = new Hashmap< Integer, String>();
innerMap1.put(100,"A");
innerMap1.put(101,"B");
innerMap1.put(102,"C");
Hashmap< Integer, String> innerMap2 = new Hashmap< Integer, String>();
innerMap2.put(200,"D");
innerMap2.put(201,"E");
innerMap2.put(202,"F");
outerHashMap.put(innerMap1, 143);
outerHashMap.put(innerMap2, 432);
现在我的问题是,有可能通过为innerMap提供一个 key / value 对作为externalHashMap的一部分来获取 outerHashMap 的值。就像如果我仅将一个键/值对(101,“ B”)作为key的一部分提供给outsideHashMap一样,我是否可以获得值143?
答案 0 :(得分:-1)
尝试如下制作getOuterValue()
,如果将outerHashMap
,innerKey = 101
和innerValue = "B"
放入其中,则会返回outerValue = 143
:
public static void main(String[] args) {
HashMap<HashMap<Integer, String>, Integer> outerHashMap = new HashMap<HashMap< Integer, String>, Integer>();
HashMap<Integer, String> innerMap1 = new HashMap< Integer, String>();
innerMap1.put(100,"A");
innerMap1.put(101,"B");
innerMap1.put(102,"C");
HashMap< Integer, String> innerMap2 = new HashMap< Integer, String>();
innerMap2.put(200,"D");
innerMap2.put(201,"E");
innerMap2.put(202,"F");
outerHashMap.put(innerMap1, 143);
outerHashMap.put(innerMap2, 432);
Integer innerKey = 101;
String innerValue = "B";
String outerValue = getOuterValue(outerHashMap, innerKey, innerValue);
}
private static String getOuterValue(HashMap<?,?> hashMapOuter, Integer innerKey, String innerValue) {
for (Map.Entry entryO : hashMapOuter.entrySet()) {
HashMap<?,?> keyO = (HashMap) entryO.getKey();
for (Map.Entry entryI : keyO.entrySet()) {
Integer keyI = (Integer) entryI.getKey();
String valueI = (String) entryI.getValue();
if (keyI.equals(innerKey) && valueI.equals(innerValue)) {
return String.valueOf(entryO.getValue());
}
}
}
return "No such element";
}