[英]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.