【发布时间】:2010-11-04 20:05:02
【问题描述】:
我刚刚完成了当前数据结构项目的主要部分,并且正在收集统计数据。一项要求是记录 TreeMap 中所有引用的计数。
此 Map 包含 31,000 多个节点,其中 String 映射到大小不确定的 TreeSet。 我需要遍历地图并不断统计集合中的项目数。
原来我的想法是这样的:
Set<String> keySet= lyricWords.keySet();
Iterator<String> iter= keySet.iterator();
String current= iter.next();
while (iter.hasNext){
runCount+= lyricWords.get(current).size();
}
运行时间太长,无法接受。有没有更有效的方法在最终结构上做到这一点?我可以在构建地图时记数,但教授希望这些数字基于最终结构本身。
【问题讨论】:
-
在 while 循环中你应该有 iter = iter.next()
-
旁注:Joshua Bloch 的 Effective Java 建议使用 for each 语法 (
for (String s : lyricWords.keySet())),而不是在 Java 5 和更新版本中尽可能直接使用迭代器。 (第 212 页) -
@Mikhail:实际上,他应该使用增强的 for 循环。迭代器是如此上千年......
标签: java data-structures treemap