【发布时间】:2013-08-06 20:32:58
【问题描述】:
问题描述
我正在阅读一本旧的 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;
}
感谢大家的帮助!
【问题讨论】:
-
Java 之于 Javascript 就像汽车之于地毯。
-
您应该更改变量名称:哈希映射不保持顺序,排序或其他方式。至于你的问题,不,没有更简单的方法。
-
“我正在考虑用循环遍历原始地图”是的! “如果是”,嗯?试试看。
-
好吧,我很害怕。感谢您的时间:-)
-
听起来您可以自己解决问题。完成后,您应该发布您的答案,以便其他人稍后可以找到它! :D