2014-11-02 122 views
0

如何在不使用BiMap的.inverse()函數的情況下進行反向映射?無BiMap映射和反向映射

他們給我:

public static Map<String, Set<String>> reverseMapping(Map<String, String> mapping) 

我想是這樣的,但沒有得到我到任何地方。

 Map <String, Set<String>> remap = new HashMap<String, Set<String>>(); 
     for (String name : mapping.keySet()) { 
      String color = mapping.get(name); 
      if(remap.containsKey(color)){ 
      ...; 
      } 
      else{ 
       ... 
      } 


} 
     return remap; 

}

+0

我們能看到你寫來嘗試解決一些代碼這個問題? – 2014-11-02 22:05:53

+0

這是問題不難解決。我同意路易斯,告訴我們一些代碼,如果你被卡住了,我們會幫忙的 – Michael 2014-11-02 22:13:20

+0

@Michael我添加了一些代碼編輯 – Peter 2014-11-02 22:20:40

回答

1

你並不遙遠

public static Map<String, Set<String>> reverseMapping(Map<String, String> mapping) 
{ 
    // slight change in the next line 
    Map <String, Set<String>> remap = new HashMap<String, Set<String>>(); 
    for (String name : mapping.keySet()) { 
     String color = mapping.get(name); 
     // Until here its ok, see comment below 
    } 
    // added the return 
    return remap; 
} 

現在,你必須檢查,如果你重映射已經包含了一套具有關鍵顏色。如果是的話加名稱就可以了。如果沒有,你需要創建一個新的設置,添加它,並把新的套入重映射

希望這有助於

+0

我做了,如果(remap.containsKey(color))然後remap.put(鍵,值),但是,我不知道要爲這些值放置什麼。 – Peter 2014-11-02 22:46:49

+0

你首先必須檢索Set,如果它已經存在於重映射集合 tmp = remap.get(color);然後做tmp.add(name);當Set for a顏色尚未出現時,請仔細處理該案例! – Michael 2014-11-02 22:52:08

+0

你可以看看我的編輯 – Peter 2014-11-02 23:24:18