问题描述
我正在阅读一本旧的 Java 编程教科书,但遇到了一个问题。
我需要转换这个:
Map<String, List<Clock>> timeTableSortedByDestination =
new HashMap<String, List<Clock>>();
进入这个:
Map<Clock, List<String>> timeTableSortedByDepartTime =
new HashMap<Clock, List<String>>();
在一种方法中:
static Map<Clock, List<String>> flipMap(Map<String, List<Clock>> originalMap) {
// implementation
}
我正在考虑使用循环和 if 遍历原始 Map,但是有没有更流畅或更简单的方法来完成它?这本书只涉及“源代码”Java(没有 Javascript)。
答案更新
好的,所以我接受了 James Grammatikos 的建议,效果很好。这是我写的:
static Map<Clock, List<String>> flipMap(Map<String, List<Clock>> originalMap) {
Map<Clock, List<String>> newMap = new HashMap<Clock, List<String>>();
for(String s : originalMap.keySet()) {
for(Clock c : originalMap.get(s)) {
newMap.put(c, new ArrayList<String>());
}
}
for(Clock c : newMap.keySet()) {
for(String s : originalMap.keySet()) {
if(originalMap.get(s).contains(c)) {
List<String> temp = newMap.get(c);
temp.add(s);
newMap.put(c, temp);
}
}
}
return newMap;
}
谢谢大家的帮助!