[英]Reverse a map that contains another nested map
我想知道如何獲得一張反映我地圖的新地圖? 我的實際地圖看起來像這樣:
centralMap = new HashMap<String, Map<String, String>>();
nestedMap = new HashMap<String, String>();
nestedMap剛剛在put-method中創建..並且放置一個元素我在main方法中使用以下內容:
TrueStringMap2D testmap = new TrueStringMap;
testmap.put("Mickey Mouse","Mathematics","1.0");
testmap.put("Mickey Mous","Physics","1.3");
testmap.put("Minnie","Chemistry","2.3");
......
現在我想通過一個名為“flipped()”的方法來反轉地圖我希望將嵌套地圖的鍵更改為中心地圖的鍵,反之亦然..所以每個“主題”(如數學,物理學) ,..)將有一個學生和成績的嵌套地圖..我怎么能這樣做?
我不允許在我的TrueString2D中創建類..我只需要復制一個列表中的centralMap的鍵,以及另一個List中的嵌套Map的那些,然后創建一個新的映射HashMap>(); (與我的centralMap相同)並將新創建的地圖(例如newCentralMap)中嵌套地圖的舊鍵列表復制為鍵,作為值,我將復制newNestedMap中centralMap的舊鍵和值newNestedMap的內容與舊地圖上的相同..但我不確切知道如何做到這一點,如果我可以復制地圖中的列表:S
非常感謝你
使用不同的東西存儲您的物品:
我不會為此使用地圖。 我只想使用Collection<PersonGrade>
。
class PersonGrade {
String name;
String subject;
Double grade;
}
然后,當您想要生成關於“所有主題上的所有成績的米老鼠”的報告時,迭代收集並獲取符合該標准的對象。 我知道當你處理大量數據時,這可能會有點慢。 但我真的試一試。
為什么不使用HashMap<String, Map<String, String>>()
而不是TrueStringMap2D
import java.util.HashMap;
import java.util.Map;
public class Flip {
public static Map <String, Map<String, String>> flip(Map <String, Map<String, String>> map){
Map <String, Map<String, String>> result = new HashMap<String, Map<String, String>>();
for (String key : map.keySet()){
for (String key2 : map.get(key).keySet()){
if (!result.containsKey(key2)){
result.put(key2, new HashMap<String, String>());
}
result.get(key2).put(key, map.get(key).get(key2));
}
}
return result;
}
/**
* @param args
*/
public static void main(String[] args) {
Map <String, Map<String, String>> map = new HashMap<String, Map<String, String>>();
map.put("Mickey", new HashMap<String, String>());
map.get("Mickey").put("Physics", "1.1");
map.get("Mickey").put("Maths", "1.2");
map.put("Minnie", new HashMap<String, String>());
map.get("Minnie").put("Physics", "1.1");
map.get("Minnie").put("Chemistry", "1.3");
System.out.println(map);
System.out.println(flip(map));
}
}
輸出
{Minnie={Physics=1.1, Chemistry=1.3}, Mickey={Maths=1.2, Physics=1.1}}
{Maths={Mickey=1.2}, Physics={Minnie=1.1, Mickey=1.1}, Chemistry={Minnie=1.3}}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.