【发布时间】:2012-09-30 16:40:54
【问题描述】:
我有一个 HashMap,我想在每次获得迭代器时以不同的随机顺序迭代它们的键值对。从概念上讲,我想在调用迭代器之前“打乱”地图(或者如果你愿意,“打乱”迭代器)。
我有两个选择:
1) 使用 LinkedHashMap 的方法并在内部保留条目列表,将其就地打乱并在调用迭代器时返回该视图。
2) 获取map.entrySet(),构造一个ArrayList并在其上使用shuffle()。
虽然这两种方法看起来与我非常相似,但我期待非常大的 HashMap,所以我真的很关心细节和内部结构,因为我真的不能浪费内存或计算。
【问题讨论】:
-
你不知道实现细节,但你可以随时查看java源代码......如果你熟悉计算时间复杂度,你应该能够自己推断一些东西,至少对于计算部分:)
标签: java data-structures random iterator hashmap