2014-11-02 123 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